我没有生搬硬套,你要是觉得不对你可以说,我也能学到新的东西。而且是你先挑起观察者模式的,我想既然你能用术语表达你的观点,那我也用术语来回复。这样大家沟通起来更省力一些。
能解决就好
我没有生搬硬套,你要是觉得不对你可以说,我也能学到新的东西。而且是你先挑起观察者模式的,我想既然你能用术语表达你的观点,那我也用术语来回复。这样大家沟通起来更省力一些。
能解决就好
// 全局通知 找了一个方法 免节点关系全局通知!!!!! 这个好使
window.Notification = {
_eventMap: [],
on: function(type, callback, target) {
if (this._eventMap[type] === undefined) {
this._eventMap[type] = [];
}
this._eventMap[type].push({ callback: callback, target: target });
},
emit: function(type, parameter) {
var array = this._eventMap[type];
if (array === undefined) return;
for (var i = 0; i < array.length; i++) {
var element = array[i];
if (element) element.callback.call(element.target, parameter);
}
},
off: function(type, callback) {
var array = this._eventMap[type];
if (array === undefined) return;
for (var i = 0; i < array.length; i++) {
var element = array[i];
if (element && element.callback === callback) {
array[i] = undefined;
break;
}
}
},
offType: function(type) {
this._eventMap[type] = undefined;
},
};
你找的,cc.Node 不就自带了吗,而且比你找的更完善。要是你不想要用全局节点,可以直接用 cc.EventTarget (Node 继承自 EventTarget)。你 window.Notification = new cc.EventTarget() 就可以了。
关键不在于监听器本身,这个用 EventTarget 之类的不难。关键在于别纠结什么同一级别的节点,事件分发,事件广播那些。
好的 没发现文档里有cc.EventTarget!我试试!
文档有介绍这些方法,不过因为 cc.Node 就是继承自 cc.EventTarget,所以文档举例用的是 cc.Node。希望大家能直接创建一个全局节点,或者直接用 cc.find(‘Canvas’) 之类的节点来做