码迷,mamicode.com
首页 > 其他好文 > 详细

FLASH AS3图片内存清除方法

时间:2016-06-03 12:44:13      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

最近一个项目里遇到加载外部图片导致内存居高不下的问题,通过各种查找总算解决掉了,其实在新版本的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图片内存清除方法

标签:

原文地址:http://www.cnblogs.com/lei-1987/p/5555742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!