cs4里的一个API,Loader.unloadAndStop
非常好用啊,非常爽。但是也遇到个问题,害得我找了2个小时。
假设:
A 载入 B
B 载入 C
这个时候,在A里面用unloadAndStop卸载B,报错,莫名其妙的错,而且没有错误来源。
需要先在B里把C,removeChild掉,再在A里面卸载B,就OK了。
ps:
flash.display.Loader.unloadAndStop(gc:Boolean=true):void
-
尝试卸载子 SWF 文件内容并停止执行已加载的 SWF 文件中的命令。此方法尝试通过删除对子 SWF 文件的 EventDispatcher、NetConnection、Timer、Sound 或 Video 对象的引用,从而卸载使用
- 停止声音。
- 删除舞台事件侦听器。
- 删除
enterFrame
、frameConstructed
、exitFrame
、activate
和deactivate
的事件侦听器。 - 停止计时器。
- 断开摄像机和麦克风实例
- 停止影片剪辑。
-
gc 提示垃圾回收器对 SWF 子对象执行 (
true
) 还是不执行 (false
) 垃圾回收。如果要以异步方式卸载很多对象,则将gc
参数设置为false
可能会提高应用程序的性能。但是,如果将该参数设置为false
,则在运行unloadAndStop()
命令之后,子 SWF 文件的媒体和显示对象可能还会保存在内存中。
另请参阅:
- flash.display.DisplayObject
- flash.display.Loader.load() 语言版本:
- 3.0 Player 版本:
- Flash 10, AIR 1.5
Loader.load()
或
Loader.loadBytes()
加载的 SWF 文件。因此,针对子 SWF 文件和子 SWF 文件的显示列表将发生以下行为:
-
参数:
我没有尝试,但觉得true后应该b里的c也会被清理。