Cocos2D-JS 中觸摸事件的吞沒和向“下”傳遞

觸摸事件的吞沒

當(dāng)給一個(gè) Node 對(duì)象加入一個(gè)觸摸 EventListener 時(shí),要想讓這個(gè) Node 吞沒這個(gè)事件,不再向“下”傳遞,要設(shè)置兩個(gè)地方。
第一,要設(shè)置

swallowTouches = true;

第二,要在觸摸事件的 onTouchBegan 回調(diào)中返回 true :

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

如果沒有這兩個(gè)設(shè)置,這個(gè) Node 就不會(huì)吞沒這個(gè)觸摸事件,尤其是第二個(gè),容易被忽略。

觸摸事件的向下傳遞

網(wǎng)上的資料在介紹 Cocos2D 觸摸事件的吞沒時(shí),都說不再向“下”傳遞,那這個(gè)“下”究竟是怎么樣的順序呢?也就是說一個(gè) Node 的對(duì)象,在觸摸事件的傳遞中,它的“下”是誰?

Cocos2D 在傳遞觸摸事件時(shí)有一個(gè)類似于“傳遞鏈”之類的東西。我們假設(shè)所有的 Node 都可以響應(yīng)觸摸事件并且不吞沒。那么當(dāng)一個(gè) Node 收到觸摸事件調(diào)用了自己的回調(diào)之后,要把這個(gè)觸摸事件傳遞給位于這個(gè)“傳遞鏈”的下一個(gè) Node 中,這個(gè)傳遞順序是和響應(yīng)的優(yōu)先級(jí)以及 Node 之間的父子關(guān)系有關(guān)的。

我們?cè)诮o一個(gè) Node 加入一個(gè)觸摸響應(yīng)的時(shí)候一般會(huì)使用一個(gè)優(yōu)先級(jí)參數(shù):

cc.eventManager.addListener(listener, nodeOrPriority);

而大多數(shù)時(shí)候,都使用 Node 的現(xiàn)實(shí)優(yōu)先級(jí)來設(shè)置這個(gè)響應(yīng)的優(yōu)先級(jí)。位于同一個(gè) Node 下的子 Node ,優(yōu)先級(jí)最高的首先收到觸摸事件,然后,它將這個(gè)觸摸事件傳遞給優(yōu)先級(jí)比自己小的 Node 中優(yōu)先級(jí)最大的那個(gè),依此類推,當(dāng)傳遞鏈中沒有兄弟 Node 后,這個(gè)事件便傳遞給了它們的父級(jí) Node ,依此類推……

下面是一個(gè)此傳遞鏈的圖,看圖比較直觀:

Cocos2d觸摸事件響應(yīng)鏈.png

圖中紅色數(shù)組和箭頭顯示了觸摸事件的傳遞順序。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點(diǎn)擊了?糾結(jié)于如何實(shí)現(xiàn)這個(gè)奇葩響應(yīng)需求?亦或是...
    Lotheve閱讀 59,543評(píng)論 51 604
  • 在iOS開發(fā)中經(jīng)常會(huì)涉及到觸摸事件。本想自己總結(jié)一下,但是遇到了這篇文章,感覺總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,249評(píng)論 4 26
  • 在開發(fā)過程中,大家或多或少的都會(huì)碰到令人頭疼的手勢(shì)沖突問題,正好前兩天碰到一個(gè)類似的bug,于是借著這個(gè)機(jī)會(huì)了解了...
    閆仕偉閱讀 5,682評(píng)論 2 23
  • 本文來自:http://ios.jobbole.com/84081/ 前言: 按照時(shí)間順序,事件的生命周期是這樣的...
    HackerOnce閱讀 2,947評(píng)論 1 10
  • 一、const與宏的區(qū)別: const簡(jiǎn)介:之前常用的字符串常量,一般是抽成宏,但是蘋果不推薦我們抽成宏,推薦我們...
    nero_i閱讀 383評(píng)論 0 0

友情鏈接更多精彩內(nèi)容