Cocos2D-X通知发生了多个唯一事件的对象

时间:2015-03-02 06:09:58

标签: event-handling cocos2d-x-3.0 localnotification

寻求有关如何设置“EventListenerCustom”类实例的帮助,以便我可以向所有对象广播一个唯一的触发器。在旧版本的Cocos2D-X中,有CCNotification,我可以在其中设置一个标志,我的所有对象都可以检查标志值是什么,并且基于对象反应的任何标志也会采取行动。

我试过寻找一个例子,我可以把所有的移动,旋转,射击逻辑放在一个类中,而我的其他对象会根据一个类可以控制和改变的标志来采取其特定的动作。

1 个答案:

答案 0 :(得分:0)

我会通过创建一个保持lambda函数的向量来实现这一点。

class EventListenerCustom : public cocos2d::Layer
{
public:
    virtual bool init();
    CREATE_FUNC(EventListenerCustom);

    void startFire();
    void addFiringEventListener(std::function<void ()> listener);
protected:
    std::vector<std::function<void()>> _firingEvents;
};



void EventListenerCustom::addFiringEventListener(std::function<void ()> listener)
{
    _firingEvents.push_back(listener);
}

void EventListenerCustom::startFire()
{
    for( const auto &child : _firingEvents)
        child();
}

或者您可以创建一个CustomEvent类来保存lambda函数和目标节点,以检查目标节点是否为空。