动作脚本3:删除孩子后不工作的听众,然后再添加

时间:2014-11-01 19:32:02

标签: actionscript-3 event-listener

我有一些代码会向具有自己代码的舞台添加“后退”按钮,单击它会删除按钮并将用户带回标题屏幕。但是,当“后退”按钮被重新引入舞台时,其听众都无法工作。

public class BACK extends SimpleButton {


    public function BACK() {
        // constructor code
        trace('back button on stage');
        addEventListener(Event.ADDED_TO_STAGE, startUp);
    }
    function startUp(ev:Event): void{
        addEventListener(MouseEvent.CLICK, gotoTitle);
        addEventListener(Event.REMOVED_FROM_STAGE, backBtnCleanUp);
    }
    function gotoTitle(ev:MouseEvent): void{
        trace('gototitle called');
        MovieClip(root).gotoTitle();
    }
    function backBtnCleanUp(ev:Event): void{
        trace('back button cleanup called');
        removeEventListener(Event.ADDED_TO_STAGE, startUp);
        removeEventListener(MouseEvent.CLICK, gotoTitle);
        removeEventListener(Event.REMOVED_FROM_STAGE, backBtnCleanUp);
    }
}

跟踪功能在首次添加到舞台时执行,但在删除后再次添加时不执行。这是代码(来自Main),它们都添加和删除它。

    function gotoHelp(): void{  // transitions to the help screen
        cleanTitle();
        addChild(helpBG);
        addChild(backBtn);
        backBtn.x = 550;
        backBtn.y = 200;
    }
    function gotoTitle(): void{ //goes to the title screen
        trace('going to title');
        removeChild(backBtn);
        removeChild(helpBG);
        titleStartUp();
    }

1 个答案:

答案 0 :(得分:1)

每次需要显示时,都应创建BACK按钮的新实例,或者从backBtnCleanUp功能中删除此行:(未测试)

removeEventListener(Event.ADDED_TO_STAGE, startUp);