美文网首页
Cocos2D-JS 中触摸事件的吞没和向“下”传递

Cocos2D-JS 中触摸事件的吞没和向“下”传递

作者: 贾佳菊 | 来源:发表于2015-08-13 21:50 被阅读1815次

触摸事件的吞没

当给一个 Node 对象加入一个触摸 EventListener 时,要想让这个 Node 吞没这个事件,不再向“下”传递,要设置两个地方。
第一,要设置

swallowTouches = true;

第二,要在触摸事件的 onTouchBegan 回调中返回 true :

onTouchBegan : function(touch, event){
   //function body
    return true;
}

如果没有这两个设置,这个 Node 就不会吞没这个触摸事件,尤其是第二个,容易被忽略。

触摸事件的向下传递

网上的资料在介绍 Cocos2D 触摸事件的吞没时,都说不再向“下”传递,那这个“下”究竟是怎么样的顺序呢?也就是说一个 Node 的对象,在触摸事件的传递中,它的“下”是谁?

Cocos2D 在传递触摸事件时有一个类似于“传递链”之类的东西。我们假设所有的 Node 都可以响应触摸事件并且不吞没。那么当一个 Node 收到触摸事件调用了自己的回调之后,要把这个触摸事件传递给位于这个“传递链”的下一个 Node 中,这个传递顺序是和响应的优先级以及 Node 之间的父子关系有关的。

我们在给一个 Node 加入一个触摸响应的时候一般会使用一个优先级参数:

cc.eventManager.addListener(listener, nodeOrPriority);

而大多数时候,都使用 Node 的现实优先级来设置这个响应的优先级。位于同一个 Node 下的子 Node ,优先级最高的首先收到触摸事件,然后,它将这个触摸事件传递给优先级比自己小的 Node 中优先级最大的那个,依此类推,当传递链中没有兄弟 Node 后,这个事件便传递给了它们的父级 Node ,依此类推……

下面是一个此传递链的图,看图比较直观:

Cocos2d触摸事件响应链.png

图中红色数组和箭头显示了触摸事件的传递顺序。

相关文章

  • Cocos2D-JS 中触摸事件的吞没和向“下”传递

    触摸事件的吞没 当给一个 Node 对象加入一个触摸 EventListener 时,要想让这个 Node 吞没这...

  • 事件传递

    CALayer----事件传递 事件的产生和传递 触摸后,系统会传递触摸到UIApplication管理的事件队列...

  • iOS 事件响应链机制

    iOS中的事件的产生和传递 首先要知道 事件传递和响应过程 相反的。 事件的传递 当你点击了屏幕会产生一个触摸事件...

  • Android触摸事件-00基础

    事件分发的相关api dispatchTouchEvent:它是传递触摸事件的接口。Activity将触摸事件传递...

  • iOS开发篇 - 触摸事件传递&事件响应链

    触摸事件的传递 触摸事件的传递是从父控件传递到子控件 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件...

  • Android触摸事件传递(下)

    上一篇中,我说明了Android中Activity和View触摸事件的传递流程,现在我们来继续学习MotionE...

  • 01进阶之路-UI视图

    1. 事件传递机制和响应者链条 学习链接 事件传递机制iOS中的事件可以分为3大类型 1 触摸事件 2 加速计...

  • Android触摸事件传递机制系列详解

    Android触摸事件的传递(一)--MotionEventAndroid触摸事件的传递(二)--输入系统Inpu...

  • iOS开发之触摸事件

    本文介绍了iOS中使用频率较高的触摸事件,并阐述了事件产生和传递的过程,以及响应者链的事件传递过程 触摸事件 简介...

  • 事件的传递和响应

    事件的传递 当产生触摸事件时, 触摸事件会被添加到由UIApplication管理的事件队列中 UIApplica...

网友评论

      本文标题:Cocos2D-JS 中触摸事件的吞没和向“下”传递

      本文链接:https://www.haomeiwen.com/subject/pcfwqttx.html