我有一些代码会向具有自己代码的舞台添加“后退”按钮,单击它会删除按钮并将用户带回标题屏幕。但是,当“后退”按钮被重新引入舞台时,其听众都无法工作。
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();
}
答案 0 :(得分:1)
每次需要显示时,都应创建BACK
按钮的新实例,或者从backBtnCleanUp
功能中删除此行:(未测试)
removeEventListener(Event.ADDED_TO_STAGE, startUp);