2010-11-04 58 views
0

我創建了一個包含舞臺上所有影片剪輯的類。這些變量指的是舞臺上的實例名稱。只要我將所有的功能都保存在一個類中,一切似乎都很好。但是,當我嘗試使用另一個類來管理影片剪輯的屬性時,我遇到了資源清理問題。(Actionscript 2.0)將MovieClip傳遞給外部腳本。如何清理

//File (MainScreen.as) 
import utils.Container; 

class MainScreen extends MovieClip 
{ 
    private var clip1:MovieClip; 
    private var clip2:MovieClip; 
    private var container:Container 

    public function MainScreen() 
    { 
     container = new Container(clip1); 
    } 

    public function CleanUpMess() 
    { 
     container.CleanUpMess(); // <-- This part seems fine 

     //? <-- Should I be calling other things here? 
    } 
} 

我相信這是關係到下面mClip中所示的分配=夾子我想通過引用傳遞這部電影由容器類使用,但我相信垃圾收集越來越迷茫的時候有兩個引用到相同的影片剪輯。有沒有一種方法可以使它不再需要這個參考。

//File (Container.as) 
class utils.Container 
{ 
    private var mClip:MovieClip; 
    public function Container(clip:MovieClip) 
    { 
     mClip = clip; 
    } 

    public function CleanUpMess() 
    { 
     mClip.removeMovieClip(); // <--- Doesn't seem to work 
     removeMovieClip(mClip); // <--- Doesn't seem to work 
    } 
} 

我發現MovieClip.removeMovieClip()的ActionScript 2.0中文件中,但我覺得我用它不正確,或者說,它並不適用於我的情況。

回答

0

如果要調用container.CleanUpMess();你不需要設置任何東西在類,除非它是不是在類文件中CleanUpMess()函數中。 CleanUpMess()方法在類中,因此可以訪問傳遞給構造方法的動畫片段。你應該能夠在類文件中調用影片剪輯變量並從那裏改變它的屬性。

例如:

public function CleanUpMess() 
{ 
mClip.x = 10; 
mClip.y = 30; 
} 

有何幫助呢?

+0

我想我的問題可能有點混亂,我會更新它。然而,這部分內容很有意思......「你可能會遇到一些問題,那些沒有附加到舞臺上的課程不能識別舞臺,也不能從該課堂上的舞臺上移除物品。」是否需要在舞臺上附加外部類來調用清理功能? – Lockyer 2010-11-04 05:26:22

+0

是的,你可以刪除在MainScreen.as中創建的對象實例,但由於MainScreen是我假設的與舞臺直接接觸的一個文檔類,因此可以從那裏引用舞臺。對不起,如果我誤解了你的問題,我會盡力幫助你,當你更新它 – Kobby 2010-11-04 05:40:46

+0

不,對不起。我相信我遇到的麻煩是當MainScreen終止時MovieClip的實例留在內存中。我理解面向對象編程的原理,我對動作特定的內存分配和清理感到困惑。 – Lockyer 2010-11-04 16:24:06