CocosCreator简单使用全局观察者模式进行节点事件派送与监听
首页 > CocosCreator > CCC学习总结    作者:闭眼就天黑   2018年7月2日 17:57 星期一   热度:4392°   百度已收录  
时间:2018-7-2 17:57   热度:4392° 

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

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

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

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

var NotificationCenter = new cc.EventTarget();
/*
//说明xxxxxxxx
*/
module.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监听的.

*/


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

jdfw.gif

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



二维码加载中...
本文作者:闭眼就天黑      文章标题: CocosCreator简单使用全局观察者模式进行节点事件派送与监听
本文地址:https://www.byjth.com/ccc/130.html
版权声明:若无注明,本文皆为“闭眼就天黑专栏_技术博客_个人学习总结”原创,转载请保留文章出处。
相关文章

版权所有:《闭眼就天黑专栏_技术博客_个人学习总结》 => 《CocosCreator简单使用全局观察者模式进行节点事件派送与监听
本文地址:https://www.byjth.com/ccc/130.html
除非注明,文章均为 《闭眼就天黑专栏_技术博客_个人学习总结》 原创,欢迎转载!转载请注明本文地址,谢谢。

cocos的版本号是多少,V2.0.4可以实现发送和监听消息,但是没法传递数据是怎么回事呢,会报错说msg,body,test未定义

返回顶部    首页    手机版本    版权所有:闭眼就天黑专栏_技术博客_个人学习总结
    站长: 闭眼就天黑    搜索cocos2dx主题 技术支持:闭眼就天黑   皖ICP备14007736号-1  

皖公网安备 34132102000107号

   sitemap