cocos2dx-3.X中对事件处理分析(1)

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

猜你在找的Cocos2d-x相关文章