事件分发机制
EventDispatch事件分发是响应用户事件的机制,基本组成:
- 事件监听器封装了我们事件的处理代码
- 事件分发器通知用户事件的监听器
- 事件对象包含事件的信息
有五种事件监听器:
- EventListenerTouch:响应touch触摸事件
- EventListenerKeyboard:响应键盘事件
- EventListenerAcceleration:响应加速度计事件
- EventListenMouse:响应鼠标事件
- EventListenerCustom:响应自定义事件
当你有一个监听器并且你想要一个对象接受它被给予的事件时,你必须吞下它。 这样它就不会被传递给优先级从高到低的其他对象。这很容易做到:
事件优先级
EventDispatcher事件分发器使用优先级决定哪个监听器首先得到一个事件。
- Fixed Priority(固定优先级)是一个整型值。值较低的事件监听器要比值较高的事件监听器先处理事件。
- Scene Graph Priority(场景优先级)是一个指向
Node
(节点)的指针。其节点具有较高z阶值(即绘制在顶部)的事件侦听器在其节点具有较低z阶值(即绘制在下面)的事件侦听器之前接收事件。这确保了触摸事件,如我们所预期的那样,从前往后传递。 - 当使用场景图优先级时,实际上是在树的上方向后移动。如果一个事件被触发,H会看一眼,要么吞下它,要么让它传递给I。同样的事情,我要么消耗它要么让它传递给G,以此类推,直到事件被它吞没或者没有得到回应。