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,
        KEYBOARD,
        MOUSE,
        ACCELERATION,
        FOCUS,
		GAME_CONTROLLER,
        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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值