2014-02-19 30 views
0

我已加載了庫的MovieClip到階段與此代碼:刪除MC裝載在運行

addChildAt(MC_1, 0); 

在這種MovieClip我有一些MovieClips用作按鈕。當我按下其中一個按鈕時,它會改變顏色(goto frame2)。

在那之後,我刪除MC_1從階段,如下所示:

removeChildAt(0); 

並裝載另一個MovieClip類似於MC_1像這樣:

addChildAt(MC_2, 0); 

的問題是,如果我載入另一個MC_1 ,最後按下的按鈕仍然是彩色的。

如何從內存中完全卸載它?

回答

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的控制權。

+0

謝謝!我用第二種方法!它工作正常;) – Loralon