flashAS3怎么让加载的外部SWF文件卸载干净

 我来答
Keensb
推荐于2016-06-27 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:730万
展开全部
要彻底地移除一个外部swf,就是要想办法彻底清除掉所有对于它的引用并停止它的播放。

首先你要移除掉外部swf的所有事件侦听。由你内部添加的事件侦听,就在内部移除;而这个外部swf本身的事件侦听,应该由外部swf提供一个移除自身事件侦听的公开方法,你从内部调用这个方法就行了。否则它的引用将会保存在 event.target 里面。

其次你要销毁所有对这个swf的全局引用(非全局引用可以不管):比如你用了某个全局变量来记录这个swf,记住要把这个变量设为 null;如果你用某个全局数组保存了这个swf,也记得把它清除出数组。如果你把swf保存在某个全局对象的属性里面,如 private var obj:Object = new Object; obj.swf = swf,也要把obj.swf 设为null;

还有你要清除掉所有对该swf内部的影片剪辑的全局引用。比如你创建了一个全局变量记录了swf下的mc : private var _mc1 = swf.mc1 的话,_mc1.parent 就是对swf的引用。同理, private var _mc2 = swf.mc1.mc2 的话,_mc2.parent.parent也是对swf的引用。_mc1和_mc2要设为null

最后你要让你内部用于加载swf的Loader对象执行 unloadAndStop() 让这个swf文件停止并卸载。

总之彻底移除一个swf是需要很仔细的,但是也是绝对有意义的,它可以最大地优化你Flash运行时的CPU占用率。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式