删除菜单按钮时,addEventListener无法正常工作*固定*

时间:2014-01-22 16:23:51

标签: actionscript-3 event-listener removechild

在我的主要内容中,我有一个按钮菜单,并添加了一个自己的类,我想要它,这样当我点击“查看地图”按钮时,它会删除按钮,因此地图可以被查看,问题是当特定按钮被删除时,似乎停止了事件监听器的工作。

这是代码,我试图尽可能地将其删除,以便向您展示问题的部分。

    public function Main () {
    drawButtons(); // draws all the buttons and adds them to the buttonList array
    // the buttons are all made from a "ButtonClass".
    addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}

public function onMouseUp(Event:MouseEvent):void {
    else if (Event.target.name == "viewMapB") {

        // imagine removeChild(buttonList[1-8]) commands here.
        removeChild(buttonList[9]); // when this is removed, eventlistener wont work

        stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp);
        stage.focus = stage; // This line fixed the problem
    }
}

private function keyPressedUp(event:KeyboardEvent):void {
    trace("ping");

    // goneBack("main"); // brings back the menu that was removed
}

实验似乎表明,只有当我删除buttonList [9]时才会出现这个问题,但到目前为止我能想到的所有工作都拒绝工作。

编辑1:显示mouseEvent的来源。

编辑2:尝试将stage.addeventlistenever添加到main。没有运气,但发现点击按钮后,如果我之后再次点击(地图覆盖了整个舞台区域),则eventlistener再次工作。现在试图弄清楚为什么......

编辑3:似乎问题与焦点有关。添加“stage.focus = stage;”在KEY_UP事件之后,侦听器似乎已经修复了它。每天学习东西!还要感谢那些帮助解决这个奇怪问题的人。

0 个答案:

没有答案