Cocos2d-x之事件分发机制

举报
yd_221104950 发表于 2020/12/03 01:19:59 2020/12/03
【摘要】 事件分发机制 EventDispatch事件分发是响应用户事件的机制,基本组成: 事件监听器封装了我们事件的处理代码事件分发器通知用户事件的监听器事件对象包含事件的信息 有五种事件监听器: EventListenerTouch:响应touch触摸事件EventListenerKeyboard:响应键盘事件EventListenerAcceleration:响应加...

事件分发机制

EventDispatch事件分发是响应用户事件的机制,基本组成:

  1. 事件监听器封装了我们事件的处理代码
  2. 事件分发器通知用户事件的监听器
  3. 事件对象包含事件的信息

有五种事件监听器:

  1. EventListenerTouch:响应touch触摸事件
  2. EventListenerKeyboard:响应键盘事件
  3. EventListenerAcceleration:响应加速度计事件
  4. EventListenMouse:响应鼠标事件
  5. EventListenerCustom:响应自定义事件

当你有一个监听器并且你想要一个对象接受它被给予的事件时,你必须吞下它。 这样它就不会被传递给优先级从高到低的其他对象。这很容易做到:

// When "swallow touches" is true, then returning 'true' from the
// onTouchBegan method will "swallow" the touch event, preventing
// other listeners from using it.
listener1->setSwallowTouches(true);

// you should also return true in onTouchBegan()

listener1->onTouchBegan = [](Touch* touch, Event* event){ // your code return true;
};



  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

事件优先级

EventDispatcher事件分发器使用优先级决定哪个监听器首先得到一个事件。

  • Fixed Priority(固定优先级)是一个整型值。值较低的事件监听器要比值较高的事件监听器先处理事件。
  • Scene Graph Priority(场景优先级)是一个指向Node(节点)的指针。其节点具有较高z阶值(即绘制在顶部)的事件侦听器在其节点具有较低z阶值(即绘制在下面)的事件侦听器之前接收事件。这确保了触摸事件,如我们所预期的那样,从前往后传递。
    在这里插入图片描述
    当使用场景图优先级时,实际上是在树的上方向后移动。如果一个事件被触发,H会看一眼,要么吞下它,要么让它传递给I。同样的事情,我要么消耗它要么让它传递给G,以此类推,直到事件被它吞没或者没有得到回应。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/104549856

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。