AcstionScript位图保存技术及相关内存优化
2012-02-06 16:40
197 查看
As3载入图片后全部为Bitmap,要将Bitmap的内存释放掉我们需要用到bitmapData的dispose方法,但在释放掉内存之前要做一个步骤就是将BitmapData模式保存的位图信息以2进制(ByteArray)形式保存,这样就能大大的降低内存的消耗,理想情况下是载入图片以后如果不用马上转成ByteArray,然后将位图删掉,释放内存。等到要用了再利用 byteArray.writeObject(bitmapData.getVector())方法将位图读出来,同时用byteArray.clear()方法将ByteArray的内存释放掉。放代码
转载:http://spzktshow.blogbus.com/logs/62151913.html
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Rectangle; import flash.net.URLRequest; import flash.utils.ByteArray; public class BTB extends Sprite { private var data:ByteArray; private var urlload:Loader; private var bool:Boolean=false; private var transBool:Boolean=false; private var bitData:BitmapData; private var rect:Rectangle; private var bitMap:Bitmap; public function BTB() { this.init(); } private function init():void { stage.addEventListener(MouseEvent.CLICK,onClick); } private function onClick(e:MouseEvent):void { if (bool==false){ //判断未加载 loadPic(); bool=true; }else{ if (this.transBool){ this.data=this.bitData.getPixels(this.rect); this.removeChild(this.bitMap); this.bitMap=null; this.bitData.dispose(); this.data.compress(); this.transBool=false; }else{ this.bitData=new BitmapData(this.rect.width,this.rect.height); this.data.uncompress(); this.data.position=0; this.bitData.setPixels(this.rect,this.data); this.data.clear(); this.bitMap=new Bitmap(this.bitData); this.addChild(this.bitMap); this.transBool=true; } } } private function loadPic():void { var url:String="1.jpg"; var urlrequest:URLRequest=new URLRequest(url); urlload=new Loader(); urlload.load(urlrequest); urlload.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); } private function onComplete(e:Event):void { var bitmap:Bitmap=e.target.content as Bitmap; var width:Number=bitmap.width; var height:Number=bitmap.height; var bitmapData:BitmapData=bitmap.bitmapData; this.rect=new Rectangle(0,0,width,height); this.data=bitmapData.getPixels(rect); bitmapData.dispose(); this.data.compress(); e.target.removeEventListener(Event.COMPLETE,onComplete); trace ("complete"); } private function clean():void { this.urlload.unloadAndStop(true); this.urlload=null; trace ("gc"); } } }
转载:http://spzktshow.blogbus.com/logs/62151913.html
相关文章推荐
- AcstionScript位图保存技术及相关内存优化
- AcstionScript位图保存技术及相关内存优化
- VC中ODBC数据库技术应用源程序详解之一(串口数据保存相关)
- VC中ODBC数据库技术应用源程序详解之一(串口数据保存相关)
- JDBC以及相关技术学习(七)----事务机制与保存点
- VC中ODBC数据库技术应用源程序详解之二(串口数据保存相关)
- 领导同志发言万能模板 这个跟技术不相关 放在这里保存下
- (八)Java 相关技术书籍
- ASP.NET对txt文件相关操作(读取、写入、保存)
- 图象处理相关技术
- 开源 SOA 工具的编程技术: Apache Beehive 相关介绍
- 比较与整理GDI与GDIPlus抓取、合并和保存位图的方法
- MySQL复制相关技术的简单总结
- 保存会话数据的两种技术之一Session
- 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术
- react redux 相关技术
- MVC中Controller控制器相关技术
- 注册表相关技术
- SharpDX之Direct2D教程II——加载位图文件和保存位图文件