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中文件中,但我觉得我用它不正确,或者说,它并不适用于我的情况。
我想我的问题可能有点混乱,我会更新它。然而,这部分内容很有意思......“你可能会遇到一些问题,那些没有附加到舞台上的课程不能识别舞台,也不能从该课堂上的舞台上移除物品。”是否需要在舞台上附加外部类来调用清理功能? – Lockyer 2010-11-04 05:26:22
是的,你可以删除在MainScreen.as中创建的对象实例,但由于MainScreen是我假设的与舞台直接接触的一个文档类,因此可以从那里引用舞台。对不起,如果我误解了你的问题,我会尽力帮助你,当你更新它 – Kobby 2010-11-04 05:40:46
不,对不起。我相信我遇到的麻烦是当MainScreen终止时MovieClip的实例留在内存中。我理解面向对象编程的原理,我对动作特定的内存分配和清理感到困惑。 – Lockyer 2010-11-04 16:24:06