[英]Delete MC loaded in runtime
我已使用以下代碼將庫的MovieClip
加載到舞台上:
addChildAt(MC_1, 0);
在此MovieClip
我將一些MovieClips
用作按鈕。 當我按下此按鈕之一時,它會更改顏色(轉到第2幀)。
之后,我像這樣從舞台上刪除了MC_1
:
removeChildAt(0);
並加載了另一個類似於MC_1
MovieClip
, MC_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.