了解Flash SWC已导入Flex Builder 3和关键帧动画

时间:2010-03-25 00:58:29

标签: flex flash actionscript-3 animation swc

我正在尝试了解从Flash CS4导入到Flex Builder 3的SWC中发生了什么。特别是我使用Designer提供的SWC作为自定义预加载器(子类DownloadProgressBar)的动画。

我试图理解的问题是,一旦激活了FlexEvent.INIT_COMPLETE,我通过运行这个来删除swc来清理:

removeChild(myPreloader);
myPreloader = null;

虽然我已经删除了这个(这是成功的,因为我通过在调用之前和之后比较this.numChildren来检查),关键帧动画仍然继续运行(不明显)。 Designer已在动画的时间线(Flash中)中设置了跟踪。

任何人都可以告诉我为什么,即使我从子类化的DownloadProgressBar中删除了动画,它仍然继续运行?

此外,导入SWC以管理从Flash端清理资源的标准做法(就像在obj-c中释放内存一样)。我发现从Flex侧移除子项并不会停止动画,这是违反直觉的。

非常感谢任何线索。

1 个答案:

答案 0 :(得分:0)

基本上,您的SWC文件只不过是包含SWF的ZIP。所以你正在做的是从舞台上删除一个MovieClip,但它并没有停止或卸载它。您可能想尝试

myPreloader.stop();

停止动画和

myPreloaderLoader.unload();

从舞台上移除项目以释放​​内存后。

请注意:Flash Player垃圾收集并不总是正常工作。如果在myPreloader中运行任何类型的ActionScript,它可能会继续运行,并且在垃圾回收期间将被忽略。通常最好为所有AS类包含clear()destroy()方法,并在Event.REMOVED_FROM_STAGE上调用它。 这必须由您的设计师同事完成,但根据我的经验,这是最干净的程序。