消息分發機制。

   消息分發其實就是根據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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章