当释放转义键时,我将最深的孩子关在树状结构中,然后告诉它的父(现在是新的“最深的孩子”)在释放转义键时关闭......但是当触发这样的事件时,我会这样做,这会导致整个链条关闭。
有关如何克服此问题的任何提示?
答案 0 :(得分:1)
尝试在侦听器的末尾添加event.stopImmediatePropagation()
。
答案 1 :(得分:0)
查看在Event实例上调用stopPropagation()
是否有效。
答案 2 :(得分:0)
不确定如何处理它,但在下面的示例中,我确保删除最深的孩子上的事件监听器,然后再将其添加到下一个孩子。
当然,您可以添加stopImmediatePropagation()方法,如其他答案中所述,以确保事件不会冒泡到其他对象。我不确定事件冒泡会影响此示例中剩余的子节点,但如果确实如此,那肯定是问题的答案,您可以在调用initEvent()之前的任何地方调用eventHandler函数中的该方法。 / p>
private function initEvent(child:Sprite):void { child.addEventListener( KeyboardEvent.KEY_UP , eventHandler ); } private function eventHandler(event:KeyboardEvent):void { if( event.charCode == //whatever the charCode is for the escape key ) { var deepestChild:Sprite = event.currentTarget; deepestChild.removeEventListener( KeyboardEvent.KEY_UP , eventHandler ); var parent:Sprite = deepestChild.parent; parent.removeChild(deepestChild ); if( parent != null ) initEvent( parent ) } }