2011-10-10 62 views
0

当释放按键时,我会以树状结构关闭最深的孩子,然后告诉其父母(现在是新的“最深的孩子')在退出键被释放时关闭......但是,当这样的事件被触发时,我会这样做,导致整个链条关闭。添加EventListener,同时触发这样的事件,但不会触发它

有关如何解决此问题的任何提示?

+0

检查'Event.bubbles'(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/Event.html#bubbles)为TRUE; – www0z0k

回答

1

尝试在侦听器的末尾添加event.stopImmediatePropagation()

0

看看你的事件实例调用stopPropagation()是否有用。

0

不知道你如何去做,但在下面的例子中,我确保在将最深的孩子添加到下一个孩子之前删除事件监听器。

当然,您可以添加stopImmediatePropagation()方法,如其他答案中所述,以确保事件不会冒泡到其他对象。我不确定在这个例子中事件冒泡会影响剩余的子元素,但是如果是这样的话,那肯定会是问题的答案,您可以在调用initEvent()之前的任何位置在eventHandler函数中调用该方法。

 
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) 

    } 
}