一个简单的事件分发模块。
EventCenter={};--内部储存事件
--注册事件
function EventCenter:Register(id,func)
if(id==nil or func==nil)then
print("nil");
return;
end
if(self[id]==nil)then
self[id]={};--初始化
end
table.insert(self[id],func);--添加事件
end
--撤销事件
function EventCenter:Remove(id,func)
if(id==nil or func==nil)then
print("nil");
return;
end
if self[id]~=nil then
for k,v in pairs(self[id]) do
if(v==func)then
self[k]=nil;--撤销事件
end
end
else
print("error id="..id);
end
end
--撤销全部事件
function EventCenter:RemoveAll(id)
if(id==nil) then
print("nil");
return;
end
self[id]=nil;
end
--发送事件
function EventCenter:Send(id,...)
if(id==nil) then
print("nil");
return;
end
if self[id]==nil then
print("error id="..id);
return;
end
for k,v in pairs(self[id]) do
v(...);
end
end
--清理
function EventCenter:Clear()
self={};
end