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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。