I use a similar approach in rLib
https://github.com/zorker/rothui/blo...b/core.lua#L39
Lua Code:
--rLib:RegisterCallback
function rLib:RegisterCallback(event, callback, ...)
if not self.eventFrame then
self.eventFrame = CreateFrame("Frame")
function self.eventFrame:OnEvent(event, ...)
for callback, args in next, self.callbacks[event] do
callback(args, ...)
end
end
self.eventFrame:SetScript("OnEvent", self.eventFrame.OnEvent)
end
if not self.eventFrame.callbacks then self.eventFrame.callbacks = {} end
if not self.eventFrame.callbacks[event] then self.eventFrame.callbacks[event] = {} end
self.eventFrame.callbacks[event][callback] = {...}
self.eventFrame:RegisterEvent(event)
end