事件类 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:多点触摸事件被取消时回调
//