cocos2dx事件分发机制

                                  cocos2dx事件分发机制

  • 事件源:场景中的对象,每个Node节点都可以触发事件
  • 事件监听者:监听器EventListener,负责监控对象是否触发某个事件, 如果触发就执行相应的回调函数。
  • 事件分发者:事件分发器EventDispatcher,负责分配事件监听器给对象。在游戏启动时,就会创建一个默认的EventDispatcher对象

  事件类型

enum class Type
{
    TOUCH,          // 触摸事件,单点触摸,多点触摸
    KEYBOARD,       // 键盘事件(按下,返回,弹出)
    ACCELERATION,   // 加速器事件(x,y,z轴的倾斜角度来判断加速状态)
    MOUSE,          // 鼠标事件
    FOCUS,          // 焦点事件
    CUSTOM          // 自定义事件
};

事件监听器类型

enum class Type
{
    UNKNOWN,            // 未知的事件监听器
    TOUCH_ONE_BY_ONE,   // 单点触摸事件监听器
    TOUCH_ALL_AT_ONCE,  // 多点触摸事件监听器
    KEYBOARD,           // 键盘事件监听器
    MOUSE,              // 鼠标事件监听器
    ACCELERATION,       // 加速器事件监听器
    FOCUS,              // 焦点事件监听器
    CUSTOM              // 自定义事件监听器
};

关于事件监听器的优先权

通过 addEventListenerWithSceneGraphPriority 添加的监听器,优先权为0。

通过 addEventListenerWithFixedPriority 添加的监听器,可以自定义优先权,但不能为0。

优先级越低,越先响应事件。

如果优先级相同,则上层的(z轴)先接收触摸事件

 

当使用场景图优先级时,实际上是在树的上方向后移动。如果一个事件被触发,H会看一眼,要么吞下它,要么让它传递给I

同样的事情,我要么消耗它要么让它传递给G,以此类推,先找监听器,再找Z轴最大的node结点,直到事件被它吞没或者没有得到回应,则整个事件触发机制结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lampard杰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值