cocos2dx-3.0 : EventListener

来源:互联网 发布:淘宝客里的返利管理 编辑:程序博客网 时间:2024/05/01 11:21
#ifndef cocos2d_libs_EventListener_h#define cocos2d_libs_EventListener_h#include "CCPlatformMacros.h"#include "CCObject.h"#include <functional>#include <string>#include <memory>#include <set>NS_CC_BEGINclass Event;class Node;/** *  The base class of event listener. *  If you need custom listener which with different callback, you need to inherit this class. *  For instance, you could refer to EventListenerAcceleration, EventListenerKeyboard, EventListenerTouchOneByOne, EventListenerCustom. */class EventListener : public Object{public:    enum class Type    {        UNKNOWN,        TOUCH_ONE_BY_ONE,        TOUCH_ALL_AT_ONCE,        KEYBOARD,        MOUSE,        ACCELERATION,        CUSTOM    };        typedef std::size_t ListenerID;    protected:    /** Constructor */    EventListener();        /** Initializes event with type and callback function */    bool init(Type t, ListenerID listenerID, std::function<void(Event*)>callback);public:    /** Destructor */    virtual ~EventListener();        /** 检查该监听是否有效 */    virtual bool checkAvailable() = 0;        /** Clones the listener, its subclasses have to override this method. */    virtual EventListener* clone() = 0;    protected:    inline void setPaused(bool paused) { _paused = paused; };    inline bool isPaused() const { return _paused; };        inline void setRegistered(bool registered) { _isRegistered = registered; };    inline bool isRegistered() const { return _isRegistered; };        inline Type getType() const { return _type; };    inline ListenerID getListenerID() const { return _listenerID; };        inline void setFixedPriority(int fixedPriority) { _fixedPriority = fixedPriority; };    inline int getFixedPriority() const { return _fixedPriority; };        inline void setSceneGraphPriority(Node* node) { _node = node; };    inline Node* getSceneGraphPriority() const { return _node; };        std::function<void(Event*)> _onEvent;   /// 事件响应函数; c++11        Type _type;                             /// 事件类型,区分重力事件,键盘事件,touch 事件等    ListenerID _listenerID;                         /// Event listener ID    bool _isRegistered;                     /// 该监听是否被注册到dispather中        // The priority of event listener    int   _fixedPriority;   // 数值越大,优先级越高。0则表示基于场景图优先级    Node* _node;            // 场景图优先级    bool _paused;           // 该监听是否暂停        friend class EventDispatcher;};NS_CC_END#endif

原创粉丝点击