0

所以我在第一帧上有两个影片剪辑,sRP_mc 和 dP_mc。现在,当单击任一影片剪辑时,我希望将影片剪辑从舞台上移除,然后我希望改变帧(我希望影片转到第 5 帧)。在第 5 帧上,有一个关闭按钮,如果单击该按钮,则会将您带回第 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 帧时,实例都会不断回来)。为什么要这样做,我将如何解决它?

4

1 回答 1

0

当对象从舞台中移除时,可见属性不会更改为 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);
}

如果从舞台中删除一个对象,则其舞台属性设置为 null。希望这会有所帮助!

于 2013-09-23T20:16:11.853 回答