Cocos2xd__用户事件

事件类 Event:class Event : public Ref

其子类:

  1. EventTouch:触摸事件

  2. EventMouse:鼠标事件

  3. EventKeyboard:键盘事件

  4. EventAcceleration:加速度事件

  5. EventCustom:自定义事件

事件源:

  精灵、层、菜单等节点对象。

事件处理者:EventListener

  class EventListener : public Ref

  其子类:

  1. EventListenerTouchOneByOne:单点触摸事件监听器

  1. EventListenerTouchAllAtOnce:多点触摸事件监听器

  2. EventListenerMouse:鼠标事件监听器

  3. EventListenerKeyboard:键盘事件监听器

  4. EventListenerAcceleration:加速度事件监听器

  5. EventListenerCustom:自定义事件监听器

可以看处事件监听器与事件具有对应关系。即键盘事件只能由键盘监听器处理。

事件分发器 EventDispatcher 负责注册、注销监听器和事件分发。采用的单例设计。

可以使用 _eventDispatcher 注册事件和注销事件,如:

   _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, node); 

看看 EventDispatcher 提供的事件管理方法:

一、注册事件:

  1. void addEventListenerWithSceneGraphPriority(EventListener* listener, Node* node)

  2. void addEventListenerWithFixedPriority(EventListener* listener, int fixedPriority)

  3. EventListenerCustom* addCustomEventListener(const std::string &eventName, const std::function<void(EventCustom*)>& callback)

二、注销事件:

  1. void removeEventListener(EventListener* listener)

  2. void removeAllEventListeners()

  3. void removeCustomEventListeners(const std::string& customEventName)

  4. void removeEventListenersForTarget(Node* target, bool recursive /* = false */)

  5. void removeEventListenersForType(EventListener::Type listenerType)

1. 触摸事件:

触摸事件可分为三个阶段:按下、移动、抬起

触摸事件有两个监听器:EventListenerTouchOneByOne、EventListenerTouchAllAtOnce

EventListenerTouchOneByOne 中触摸事件响应属性:

  1. std::function<bool(Touch*, Event*)> onTouchBegan:触屏时回调,若返回 true 则可继续回调 2,3,否则不回调。

  2. std::function<void(Touch*, Event*)> onTouchMoved:在屏幕移动时回调

  3. std::function<void(Touch*, Event*)> onTouchEnded:离开屏幕时回调

  4. std::function<void(Touch*, Event*)> onTouchCancelled:单点触摸事件被取消时回调

  注:std::function 是一种通用的函数封装,请参见 C++。

EventListenerTouchAllAtOnce 中触摸事件响应属性:

  1. std::function<void(const std::vector<Touch*>&, Event*)> onTouchBegan:多点触屏时回调,若返回 true 则可继续回调 2,3,否则不回调。

  2. std::function<void(const std::vector<Touch*>&, Event*)> onTouchMoved:多点在屏幕移动时回调

  3. std::function<void(const std::vector<Touch*>&, Event*)> onTouchEnded:多点离开屏幕时回调

  4. std::function<void(const std::vector<Touch*>&, Event*)> onTouchCancelled:多点触摸事件被取消时回调

//

猜你喜欢

转载自www.cnblogs.com/teternity/p/Cocos2xd__Event.html