关于自定义事件的问题。

学习了一下自定义事件。有一下一些小问题,请教一下前辈们:

(1) 我看到文档是用:
cc.eventManager.addListener(this._listener1, 1);
cc.eventManager.dispatchEvent(event);

范例是:
this.node.on(‘CUSTOM_EVENT’, onCustomEvent, this.node);
this.node.emit(‘CUSTOM_EVENT’);

这两种形式有什么区别?

(2) emit的形式比较顺利,但我有两个精灵A B
我希望A精灵的发出事件,B精灵监听,一直没有监听到,但用范例的形式,直接在A精灵里面控制B精灵,感觉有点奇怪。
有没有demo可以参考一下?

不应该有这样的文档?你在哪看到的?不推荐使用任何 cc.eventManager 的 API,实际上搜 API 文档你也找不到这个
应该用范例中的方式。事件的文档请参考

http://cocos.org/docs/creator/scripting/events.html

1.如果我没记错,cc.eventManager这种是属于可以使用但是

不推荐

2.如果A和B是父子关系,可以通过dispatchEvent的方式让子节点的事件冒泡给父节点,其他的层级关系属于事件广播,现在Creator不支持,所以就只能直接操作节点了。

他要的不是广播,是 B 监听 A,这样的话,用

A.on(‘event type’, callback, B);

这样很正常啊,没什么奇怪的,你只是监听一个 A 的事件,不存在什么控制关系

Oh!! 多谢多谢!

我看的是cocos2d-x的文档:http://www.cocos.org/docs/html5/v3/eventManager/zh.html

我以为是一样的。(额外的收获啊!)

多谢前辈!
问题搞明白了!

我一开始的理解是如果再A里面发送这个事件给B,失去了“事件”的意义。
事件应该是B写好callback,然后等着A或者其他C来驱动,然后B响应。
而现在的使用方式,相当于调用了函数而已。