我们在开发中,常常需要实现类似OC中的通知的功能。
在 Quick 中也有类型的事件分发机制。
下面是实例:
首先我们创建一个名为 EXNode 的类,其中包含着两个函数
function EXNode:ctor( )
-- 该句为EXNode类添加了扩展的事件处理方法,现在我们可以使用 EventProtocol 中的函数了,通过这些函数我们可以让 EXNode 接收到自定义的消息然后进行处理
cc.GameObject.extend(self):addComponent("components.behavior.EventProtocol"):exportMethods()
cc.ui.UIPushButton.new({normal = "caozuodian1.png",pressed = "caozuodian1.png"})
:align(display.CENTER, display.cx, display.cy)
:onButtonClicked(function ( )
self:getChildEvent()
end)
:addTo(self)
end
-- 这个函数是分发 name 为 "MY_NEWS" 的事件
function EXNode:getChildEvent( )
self:dispatchEvent({name = "MY_NEWS"})
end
然后在另一个类中添加事件监听
EXNode = require("app.class.EXNode")
function MainScene:ctor()
self.exNode = EXNode.new()
self.exNode:addEventListener("MY_NEWS", handler(self, self.noMynews))
self:addChild(self.exNode,20)
end
function MainScene:noMynews( )
print("接收到通知")
end
这样,当我们点击按钮时,就能输出”接收到通知”这句话