2010-12-03 81 views
1

我正在嘗試從我的舞臺上刪除一個MovieClip後,我完成了一些小事情。在加載我的框架時,我在創建一個餅圖的函數中添加了一些代碼。試圖從舞臺上刪除MovieClip

var piechart:MovieClip = new MovieClip(); stage.addChild(piechart); //然後再畫一個餅圖

這樣一點代碼就不在我的「動作」層上。現在我在這個框架上有一個按鈕,它導航到時間軸中的一個不同的框架,但是當我改變框架時,這個餅圖仍然存在。那麼,在完成它之後,如何從舞臺上刪除這個餅圖?我已經嘗試stage.removeChild(...)和其他人,但我認爲它錯了?任何幫助,將不勝感激。

感謝

回答

2

Myk是對的,最好不要在時間軸上編碼。在任何情況下,一個快速解決方案就是在離開當前幀之前清除舞臺。

例如:

function nextFrame(event:MouseEvent):void 
    { 
     //if you're still in the same frame , this should work... 
     stage.removeChild(pieChart); 

     //then move on... 
     gotoAndStop('whereverYouWannaGo'); 
    } 
+0

這是qiuck和簡單的方法我需要什麼。是的,我應該看看單獨的班級,這樣我可以更好地管理它們,但是就目前而言,這將起作用。謝謝! – jomille 2011-01-21 18:01:44

2

在時間軸上寫代碼將導致各種各樣的是棘手的診斷的情況 - 你認爲是拉動所有的代碼伸到一些類來代替,並通過聯動堅持呢?這確實是一個最佳實踐,你會避免這樣的問題。

也就是說,有各種方法可以從舞臺上刪除東西。如果你想從舞臺中刪除一切,因爲你的轉換或什麼的,像這樣的工作:

while (this.numChildren > 0) { 
    this.removeChildAt(0); 
} 

另外,如果有什麼你的對象的特定父混亂,你可以使用這樣的代碼:

if (pieChart.parent) { // checks to see if it actually has a parent 
    pieChart.parent.removeChild(pieChart); 
} 

這樣一來,即使你不小心調用父屬性記不清你參考的父對象(如可如果你正在做時間軸代碼極易發生),你仍然可以檢索參考的對象本身。那有意義嗎?

0

使用gotoAndStop( 「desiredFrame」)

,如果你嘗試的gotoAndPlay,以前的幀將繼續發揮