0

したがって、最初のフレームに sRP_mc と dP_mc の 2 つのムービークリップがあります。ここで、ムービークリップのいずれかがクリックされると、ムービークリップがステージから削除され、フレームが変更されます (ムービーがフレーム 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);
}

ご覧のとおり、sRP_mc または dP_mc が removeChild メソッドを使用して削除された場合、sRP_mc および dP_mc は表示されません (.visible != true)。ステージから完全に削除されません (または、フレーム 1 に戻るたびにインスタンスが戻ってくると思います)。なぜこれを行うのですか?どうすれば修正できますか?

4

1 に答える 1

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);
}

オブジェクトがステージから削除されると、そのステージ プロパティは null に設定されます。うまくいけば、これが役に立ちます!

于 2013-09-23T20:16:11.853 に答える