事件响应的优先级、stopProgapation禁止下层组件响应
生活随笔
收集整理的這篇文章主要介紹了
事件响应的优先级、stopProgapation禁止下层组件响应
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
cocos2d-js沒(méi)有完整的鼠標(biāo)事件處理,這點(diǎn)比js/flash的要差一些,不過(guò)湊合著也可以用了。 一般界面編程,可以用顯示列表的Node作為監(jiān)聽(tīng)器的優(yōu)先級(jí),在上方的會(huì)比下方的高優(yōu)先級(jí)。 而cocos2d-js沒(méi)有stopImmediatePropagation,只有stopProgapation,一旦某個(gè)監(jiān)聽(tīng)器中執(zhí)行了stopProgapation,后續(xù)的監(jiān)聽(tīng)器都不會(huì)被執(zhí)行。這里并沒(méi)有js/flash的冒泡概念。 如果在上層Node中stopProgapation,那么效果就有點(diǎn)像設(shè)置了swallowTouches:true,但會(huì)更靈活 例子: 界面上添加2個(gè)sprite,child1在下,child2在上。 如下的代碼,child2的監(jiān)聽(tīng)器優(yōu)先級(jí)高,會(huì)首先執(zhí)行,其中func2會(huì)先輸出,因?yàn)榘错樞驁?zhí)行,但由于stopProgapation,所以child1的監(jiān)聽(tīng)器不會(huì)被執(zhí)行。 if("touches" in cc.sys.capabilities){cc.eventManager.addListener({event: cc.EventListener.TOUCH_ONE_BY_ONE, onTouchBegan: function(){trace("func1");return true;}}, this.child1);cc.eventManager.addListener({event: cc.EventListener.TOUCH_ONE_BY_ONE, onTouchBegan: function(touch,event){trace("func2"); //按順序執(zhí)行,先f(wàn)unc2,再func3return true;}}, this.child2);cc.eventManager.addListener({event: cc.EventListener.TOUCH_ONE_BY_ONE, onTouchBegan: function(touch,event){trace("func3");event.stopPropagation();return true;}}, this.child2);}else{cc.eventManager.addListener({event: cc.EventListener.MOUSE, onMouseDown: function(){trace("func1");}}, this.child1);cc.eventManager.addListener({event: cc.EventListener.MOUSE, onMouseDown: function(event){trace("func2"); //按順序執(zhí)行,先f(wàn)unc2,再func3}}, this.child2);cc.eventManager.addListener({event: cc.EventListener.MOUSE, onMouseDown: function(event){trace("func3");event.stopPropagation();}}, this.child2);}
?
轉(zhuǎn)載于:https://www.cnblogs.com/kenkofox/p/3974998.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的事件响应的优先级、stopProgapation禁止下层组件响应的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDU5007 Post Robot
- 下一篇: Dynamics CRM2013 任务