Quick_事件分发机制

本文详细介绍了如何在Quick中模仿Objective-C中的通知机制,通过创建自定义事件和事件监听器,实现了类似OC的通知功能。通过实例展示了事件分发和消息传递的过程,以及如何在不同类之间进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在开发中,常常需要实现类似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

这样,当我们点击按钮时,就能输出”接收到通知”这句话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值