事件响应的优先级、stopProgapation禁止下层组件响应
生活随笔
收集整理的這篇文章主要介紹了
事件响应的优先级、stopProgapation禁止下层组件响应
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
cocos2d-js沒有完整的鼠標(biāo)事件處理,這點比js/flash的要差一些,不過湊合著也可以用了。 一般界面編程,可以用顯示列表的Node作為監(jiān)聽器的優(yōu)先級,在上方的會比下方的高優(yōu)先級。 而cocos2d-js沒有stopImmediatePropagation,只有stopProgapation,一旦某個監(jiān)聽器中執(zhí)行了stopProgapation,后續(xù)的監(jiān)聽器都不會被執(zhí)行。這里并沒有js/flash的冒泡概念。 如果在上層Node中stopProgapation,那么效果就有點像設(shè)置了swallowTouches:true,但會更靈活 例子: 界面上添加2個sprite,child1在下,child2在上。 如下的代碼,child2的監(jiān)聽器優(yōu)先級高,會首先執(zhí)行,其中func2會先輸出,因為按順序執(zhí)行,但由于stopProgapation,所以child1的監(jiān)聽器不會被執(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í)行,先func2,再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í)行,先func2,再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ù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的事件响应的优先级、stopProgapation禁止下层组件响应的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU5007 Post Robot
- 下一篇: 在古 建筑在看架是什么