消息分发机制。

   消息分发其实就是根据key值,去找key所对应的函数,然后调用这个函数。


MessageCenter  = MessageCenter or {
    funcs={}
}


function MessageCenter.register(msgId,func)
    local msgFuncs = MessageCenter.funcs[msgId]
    if msgFuncs == nil then
        MessageCenter.funcs[msgId] = {}
        msgFuncs = MessageCenter.funcs[msgId]
    end


    for key, var in ipairs(msgFuncs) do
        if var == func then
            return
        end
    end

    table.insert(msgFuncs,func)

end


function MessageCenter.unregister(msgId,func)
    local msgFuncs = MessageCenter.funcs[msgId]
    if msgFuncs ~= nil then
        for key, var in ipairs(msgFuncs) do
            if var == func then
                table.remove(msgFuncs,key)
                return
            end
        end
    end
end


function MessageCenter.sendMessage(msgId,data)
    local msgFuncs = MessageCenter.funcs[msgId]
    --cclogd("sendMessage "..msgId)
    if msgFuncs ~= nil then
        for key, var in ipairs(msgFuncs) do
            var(msgId,data)
        end
    end
end


function MessageCenter.clear()
    MessageCenter.funcs = {}
end

你可能感兴趣的:(lua,cocos2d-x,消息分发)