• 进阶话题
    • 注册事件监听
    • 移除事件监听

    进阶话题

    注册事件监听

    当我们需求多个节点对象有相同的事件响应时,可以创建一个事件监听器,然后通过 eventDispatcher,将其注册到多个对象。

    以我们之前提到的触摸事件监听器为例:

    C++

    1. // Add listener
    2. _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1,
    3. sprite1);

    需要注意的是,在添加到多个对象时,需要使用 clone() 方法。

    C++

    1. // Add listener
    2. _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1,
    3. sprite1);
    4. // Add the same listener to multiple objects.
    5. _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(),
    6. sprite2);
    7. _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(),
    8. sprite3);

    移除事件监听

    按照下面的方法,可以将已经添加的事件监听器移除。

    C++

    1. _eventDispatcher->removeEventListener(listener);
    内置节点对象的事件分发机制,和我们上面讨论的一致,比如,当你点击带有菜单项的菜单时,也会分发一个事件。 同样的你也可以在内置节点对象上使用 removeEventListener() 移除事件监听。

    原文: http://docs.cocos.com/cocos2d-x/manual/zh/event_dispatcher/registering.html