cocos2dx之event事件(一)

事件机制是引擎非常重要的一部分,关于事件,引擎需要解决以下几个问题:是否发生了事件?发生了什么事件?事件是否需要处理?事件给谁处理?

个人理解的事件:当出现来自鼠标,键盘,触屏,摇杆等输入源的输入时,这个事实称之为事件

无论需不需要处理事件,引擎无时无刻都在感受事件,一旦有事件发生,就会调用EventDispatcher::dispatchEvent(Event* event),来判断事件是否需要处理,给谁处理的后续问题。当在屏幕上任意位置单击鼠标后,即进入dispatchEvent,此时event的类型为TOUCH



查看调用堆栈可知,在循环中每一帧会调用pollEvents来检测外部事件.

class CC_DLL Event : public Ref
{
public:
    /** Type Event type.*/
    enum class Type
    {
        TOUCH,
        KEYBOARD,
        ACCELERATION,
        MOUSE,
        FOCUS,
        GAME_CONTROLLER,
        CUSTOM
    };
//省略非重要部分
    Type _type;     ///< Event type    
    bool _isStopped;       ///< whether the event has been stopped.
    Node* _currentTarget;  ///< Current target
}

 Event主要包含了三个重要的变量,type定义事件类型;isStopped定义该event是否已经停止,当一个event发生停止时,与其相关的Listener都要停止callback的调用;currentTarget保存与该Event相关的node

对于事件类型,由于实际项目通常只有来自触摸的输入源,所以最常用到的是TOUCH类型

TOUCH和MOUSE的区别是鼠标移动,滚动,右击等来自鼠标的操作都是MOUSE事件,触摸的方式输入的事件是TOUCH类型.


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ellis1970

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值