FLASH AS3图片内存清除方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FLASH AS3图片内存清除方法相关的知识,希望对你有一定的参考价值。

最近一个项目里遇到加载外部图片导致内存居高不下的问题,通过各种查找总算解决掉了,其实在新版本的FLASH PLayer中已经有了相关的方法。

项目中,加载到文件中的图片以BitmapData类的形式存在,即使remove或者设置为null仍然没用。

帮助里可以看到BitmapData有一个方法,dispose,具体如下:


dispose () 方法
public function dispose():void
语言版本: ActionScript 3.0
运行时版本: Flash Player 9, AIR 1.0, Flash Lite 4
释放用来存储 BitmapData 对象的内存。

对图像调用 dispose() 方法时,该图像的宽度和高度将设置为 0。对此 BitmapData 实例的方法或属性的所有后续调用都将失败,并引发异常。

BitmapData.dispose() 立即释放由实际的位图数据占用的内存(一个位图最多可使用 64 MB 的内存)。使用 BitmapData.dispose() 后,BitmapData 对象不再可用,而且,如果对 BitmapData 对象调用函数,Flash 运行时将引发异常。但是,BitmapData.dispose() 不会将 BitmapData 对象(大约 128 个字节)作为垃圾回收;由实际的 BitmapData 对象占用的内存在垃圾回收器收集 BitmapData 对象时释放。

 

再结合System类的gc方法,就完全释放内存了,至少我的项目中问题解决了。

 

gc () 方法
public static function gc():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9.0.115.0, Flash Lite 4
强制执行垃圾回收进程。

仅限于 Flash Player 调试版和 AIR 应用程序。在 AIR 应用程序中,System.gc() 方法仅限在运行于 AIR Debug Launcher (ADL) 中的内容或已安装的应用程序的应用程序安全沙箱中的内容中启用。

不过要注意的是,一定要在图片不用之后再调用,否则会直接不显示了。

以上是关于FLASH AS3图片内存清除方法的主要内容,如果未能解决你的问题,请参考以下文章

flash as3.0 图片自动添加

Flash AS3 保存图片到本地

使用 Flash 进行实时视频键控 (AS3)?怎么做?

FLASH AS3:以编程方式删除关键帧

如何清除内存缓存?

高分求一个 flash as3.0的关于鼠标拖曳startDrag() 方法后 怎么获取拖曳后的坐标!!做凹透镜原理动画!