所以我在第一帧上有两个动画片段,sRP_mc和dP_mc。现在,当点击任一个动画片段时,我希望从舞台中删除动画片段然后我想要改变帧(我希望电影转到第5帧)。在第5帧,有一个关闭按钮,如果单击该按钮,会将您带回到第1帧(但是当它返回到第1帧时,我希望点击的动画片段不再存在)。这是我的第一帧(第1帧)的代码。
import flash.events.MouseEvent;
stop();
if (sRP_mc.visible == true) {
sRP_mc.addEventListener(MouseEvent.CLICK, sRPClicked);
function sRPClicked(event:MouseEvent):void {
sRP_mc.removeEventListener(MouseEvent.CLICK, sRPClicked);
removeChild(sRP_mc);
gotoAndPlay(5);
}
}
if (dP_mc.visible == true) {
dP_mc.addEventListener(MouseEvent.CLICK, dPClicked);
function dPClicked(event:MouseEvent):void {
dP_mc.removeEventListener(MouseEvent.CLICK, dPClicked);
removeChild(dP_mc);
gotoAndPlay(10);
}
}
在第5帧,有一个关闭按钮,代码就是这个。
import flash.events.MouseEvent;
stop();
close_btn.addEventListener(MouseEvent.CLICK, closeScreen);
function closeScreen(event:MouseEvent):void {
gotoAndStop(1);
}
并且在第10帧上还有一个关闭按钮,代码就是这个。
import flash.events.MouseEvent;
stop();
close_btn.addEventListener(MouseEvent.CLICK, closeScreen2);
function closeScreen2(event:MouseEvent):void {
gotoAndStop(1);
}
如您所见,如果使用removeChild方法删除sRP_mc或dP_mc,则sRP_mc和dP_mc不应该是可见的(.visible!= true)但是当我播放它时,它表示sRP_mc和dP_mc始终可见并且孩子不会被完全从舞台上移除(或者我认为每当我回到第1帧时,意志就会不断回归)。为什么要这样做以及我该如何解决?
答案 0 :(得分:0)
当从舞台中删除对象时,除非您手动执行此操作,否则visible属性不会更改为false。这里有一个更好的方法来检查一个项目是否不在舞台上(我还清理了你的内联函数):
if (sRP_mc.stage != null) {
sRP_mc.addEventListener(MouseEvent.CLICK, sRPClicked);
}
function sRPClicked(event:MouseEvent):void {
sRP_mc.removeEventListener(MouseEvent.CLICK, sRPClicked);
removeChild(sRP_mc);
gotoAndPlay(5);
}
如果从舞台中删除了一个对象,则其stage属性设置为null。希望这有帮助!