emit发射事件只能在同一个脚本里接收吗?

为啥我在一个脚本用emit发送事件,另外一个脚本on接收事件,但是接收不到,如果emit和on在同一个脚本就能够接收,这是为什么?我是照着官方文档来的,第一次用emit,如果不能跨脚本发送事件,emit的意义是什么 ??还是说我操作有误?

发送方,按钮触发

emit: function(){
    this.node.emit("oh",{
        name: "oh"
    })

接收方

    this.node.on("oh",function(){
        cc.log("oh my god");
    })

发送方和接收方没有在同一个脚本,现在无法接收事件

emit 和 on 是成员方法,需要在要监听的对象上调用,你这边的监听者是 this.node。
既然都在同一个节点上,那当然只能收发同一个节点的事件。

:joy:额,谢谢,随时照着文档写,我自己根本就不知道该怎么办

你好,我也是新手,对emit和on也存在这个疑问,我不是很理解jare的回复,能帮忙再解析一下吗?或者帮忙给个可以在不同节点之间发射和接受的例子?谢谢!

emit发送的事件只能相同的节点接收,在一个节点emit发送事件就只有在一个节点上接收,不同节点之间暂时只有dispatchar事件派送,但是是从子节点一层一层的往父节点派送,全局事件派送暂时我也不知道有什么方法

1赞

多谢了!我试了下,将on的调用者改成被监听的对象就可以了,不过感觉这不是我想要的效果。
全局的消息可以使用cc.EventCustom,通过cc.eventManager来触发。
emit和on的用途还是挺疑惑的~

多谢你的告知,以前不知道用什么方法派送全局事件,现在知道了:kissing_heart:

哥们,使用cc.eventManager消息,另外一个脚本怎么接收啊

emit同一个节点不同脚本都能使用?

不仅同一个节点,该节点的父节点也会收到。这些官方教程里面都有说。

常驻节点?