簡體   English   中英

刪除運行時加載的MC

[英]Delete MC loaded in runtime

我已使用以下代碼將庫的MovieClip加載到舞台上:

addChildAt(MC_1, 0);

在此MovieClip我將一些MovieClips用作按鈕。 當我按下此按鈕之一時,它會更改顏色(轉到第2幀)。

之后,我像這樣從舞台上刪除了MC_1

removeChildAt(0);

並加載了另一個類似於MC_1 MovieClipMC_1所示:

addChildAt(MC_2, 0);

問題是,如果我加載另一個MC_1 ,最后按下的按鈕仍然保持彩色。

如何將其完全從內存中卸載?

顯然您沒有加載其他 MC_1 ,而是要添加MC_1引用的同一實例。 “加載”影片剪輯不僅在添加,而且還在實例化 ,為此,您可以調用MC_1 = new Something(); 因此,為了在庫中添加具有原型的全新影片剪輯,您必須通過將MC_1 = new Something()放置在庫中來重新實例化所使用的變量,其中Something是影片剪輯的名稱。

您還可以采用另一種方法:為原型提供一個對Event.REMOVED_FROM_STAGE事件做出反應的函數,該函數將使MC中的所有按鈕將其狀態更改為默認狀態。 像這樣:

public class Something extends MovieClip {
    // any other functionality is here
    public function Something() {
        // ...
        addEventListener(Event.REMOVED_FROM_STAGE,resetMC);
    }
    private function resetMC(e:Event):void {
        button_1.gotoAndStop(1); // make sure to place proper name of buttons
        ... // place one gotoAndStop() call per button you want to switch back
    }
}

然后,一旦您執行removeChild(MC_1) ,此代碼就會啟動,使MC_1的所有按鈕(好吧,在resetMC()函數中引用的所有按鈕)顯示相應的幀(此處, button_1將顯示第一幀)。 通常,這種方法更好,因為您沒有使新實例出現在內存中,因此保留了對當前MC_1的控制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM