前端之家收集整理的这篇文章主要介绍了
cocos2dx-3.X中对事件处理分析(1),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- 1、cocos2dx-3.X中对事件处理进行了很大的改动,可以说是从写,跟2.X中的差别很大,这篇文章,就来浅析一下3.X的事件处理。
- 2、
- 整体结构:
- 事件分为触摸(EventTouch)、键盘(EventKeyboard)、custom(EventCustom)等,这些所有的具体事件类都继承于Event类,根据一个类型变量来区分
- /** Type Event type.*/
- enum class Type
- {
- TOUCH,KEYBOARD,ACCELERATION,MOUSE,FOCUS,GAME_CONTROLLER,CUSTOM
- };
- 比如触摸:
- EventTouch::EventTouch()
- : Event(Type::TOUCH)
- {
- _touches.reserve(MAX_TOUCHES);
- }
-
- 3、
- 每一种事件都对应一个Listener,如EventListenerTouchOneByOne、
- EventListenerCustom等,都继承于EventListener,通过下面的进行区分:
- /** Type Event type.*/
- enum class Type
- {
- UNKNOWN,TOUCH_ONE_BY_ONE,TOUCH_ALL_AT_ONCE,CUSTOM
- };
- 比如:
- bool EventListenerTouchOneByOne::init()
- {
- if (EventListener::init(Type::TOUCH_ONE_BY_ONE,LISTENER_ID,nullptr))
- {
- return true;
- }
-
- return false;
- }
- 4、
- 一个很重要的类,这个类处理事件的注册和分发,下面一篇看一下这个类:
- /** @class EventDispatcher
- * @brief This class manages event listener subscriptions
- and event dispatching.
-
- The EventListener list is managed in such a way that
- event listeners can be added and removed even
- from within an EventListener,while events are being
- dispatched.
- @js NA
- */
- class CC_DLL EventDispatcher : public Ref
-
-