View Single Post
04-09-21, 08:56 PM   #3
kurapica.igas
A Chromatic Dragonspawn
Join Date: Aug 2011
Posts: 152
When use a frame to register non-existed event, it'd throw an error, that's why the first try failed.

I guess the AceEvents handle it like

Lua Code:
  1. local events = {}
  2. local frame = CreateFrame("Frame")
  3.  
  4. frame:SetScript("OnEvent", function(self, event, ...)
  5.     for frm, handler in pairs(events[event]) do
  6.         frm[handler](frm, event, ...)
  7.     end
  8. end)
  9.  
  10. function addon:RegisterEvent(event, handler)
  11.     if not events[event] then
  12.         events[event] = {}
  13.  
  14.         -- Where the error raised when event not existed
  15.         -- But the events[event] already existed, so no error next time
  16.         frame:RegisterEvent(event)
  17.     end
  18.  
  19.     -- register the handler to the addon
  20.     events[event][self] = handler
  21.    
  22.     return true
  23. end

So, you can make a version of your own, it's not complicated
  Reply With Quote