自定义事件CustomEvent只能在一个场景内接收吗

auto listener = EventListenerCustom::create("test",](EventCustom* evt){
    
        log("say hi");
    });
    
    auto dispatcher = Director::getInstance()->getEventDispatcher();
    dispatcher->addEventListenerWithSceneGraphPriority(listener, this);
    
    runAction(Sequence::create(DelayTime::create(2),CallFunc::create(]{
        
        auto scene = Scene::create();
        scene->runAction(Sequence::create(DelayTime::create(2),CallFunc::create(]{
            
            auto dispatcher = Director::getInstance()->getEventDispatcher();
            
            log("dispatcher a msg");
            dispatcher->dispatchCustomEvent("test");
          
        }), NULL));
        
        Director::getInstance()->pushScene(scene);

    }), NULL));


```


如上,在一个场景的时候,触发有效,但是接收绑定的node和dispatch的时候不在一个场景的话,就无效,请问就是这样设定的吗

不同scene的信号联动,用自定义事件是不错的选择呀
对象node是用户控制的。
派发器dispatcher如果用户不设置的话,就应该是director里面那个,是全局唯一的。

所以,事件如何调度,得看你listener回调指向的是哪个scene的对象了吧,看看eventdispathcer的代码吧

dispatcher->addEventListenerWithSceneGraphPriority(listener, this);
切换scene的时候你的node(上一行代码里的this)生命周期已经结束了, 所以事件监听也被移除了