creator.d.ts 里面eventManager对象是否缺少一个事件分发的函数。用creator生成的hello world的Typescript模板项目里面自带的creator.d.ts无dispatchEvent
我查看了源码,在CCEventManager里面第1049行是dispatchEvent方法。那么dts没有是为什么。
我们不希望用户使用任何 eventManager 的接口,事件功能目前在 Node 和 SystemEvent 层面已经是完备的了,请参考下面两篇文档。
http://cocos.com/docs/creator/scripting/internal-events.html
http://cocos.com/docs/creator/scripting/player-controls.html
eventManager 可能会在未来版本被重构,并不会保障 API 的持续性
是这样,以往我在egret或者laya中,我都会实现他们的IEventDispatcher接口或者持有继承EventDispatcher,来达到一个事件中心的目的。依次解耦V和M之间的联系。creator里面也想模型,逻辑,视图分离,如果在cc里面找不到合适的替代品,那就要自己实现一个事件分发中心,我是想把eventManager利用起来。
事件分发完全可以用 EventTarget 来实现,完全可以代理 EventManager 中的自定义事件派发,而且轻量很多,简单很多。比如
var IEventDispatcher = new cc.EventTarget();
IEventDispatcher.on('anyevent', function () {
...
}, target);
IEventDispatcher.emit('anyevent');
之前很多人问集中式的事件分发是不是没了,当然不是没有了,而是实现更简单了啊。其实解释过很多次,但是好像还是很多人不理解
ok,感谢
把名字改了一下,方便论坛其他朋友在查找相关问题的时候,可以看到。