CocosCreator简单使用全局观察者模式进行节点事件派送与监听

最近做的农场游戏,一些界面变动(金币变动,或者一些操作等)都是通过查找节点得到挂载的脚本组件来控制界面的内容显示,而creator的监听和发射事件都是基于节点的.突发奇想会不会有全局的观察者模式来处理事件的监听和发射.

于是在论坛收到了jare回答的问题.根据回答就尝试了一下.于是有了本文的介绍,以便后来者方便使用.

首先把NotificationCenter做成全局的js脚本.这样就支持全局调用了.

在用到的地方之间require这个脚本文件,然后使用on或emit即可.

1var NotificationCenter = new cc.EventTarget();
2/*
3//说明xxxxxxxx
4*/
5module.exports = NotificationCenter;

 

/**

* 支持emit on off事件

* on监听事件

* //监听notification事件

* NotificationCenter.on('notification',  function (event) {

*      console.log(event.detail.msg);//这里的msg为emit事件派发数据的key

*      console.log(event.detail.body);//这里的body为emit事件派发数据的key

*      console.log(event.detail.test);//这里的test为emit事件派发数据的key

* }.bind(this));

*

* emit派发事件

* //发射notification事件

* NotificationCenter.emit('notification',{

*      msg: 'Hello, this is Cocos Creator',//这里的msg为on事件监听数据的key

*      body:"你好啊",//这里的body为on事件监听数据的key

*      test:12,//这里的test为on事件监听数据的key

*

* //关闭notification事件

* NotificationCenter.off('notification');

*

* 说明:此处把NotificationCenter设置为全局的数据,用到的地方需要require本文件

* 例如:var NotificationCenter = require("NotificationCenter");

* 需要监听xxxxx事件的可以在start或onLoad函数里使用on进行监听.

* 需要发送事件的时候直接调用emit事件,第二个参数可以带数据

*

* 注意:在使用本事件的js脚本挂载的节点必须是可见的(node.active = true).否则事件是无法on监听的.

*/

 

大概就是这个样子,这里只是简单的使用,还有优化的地方.这里不过感觉用起来不是很顺手,因为引用该文件的脚本所在节点如果不显示则无法正确的执行. 

 

大家优化后可以分享出来到论坛https://www.27ki.com/forum-81-1.html      by:闭眼就天黑

来自:https://www.byjth.com/ccc/130.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值