使用Dispose()将MovieClip转换为位图

时间:2013-07-27 11:42:25

标签: actionscript-3 flash bitmapdata

我正在使用Flash CS6和AIR进行手机游戏。也可以在同一平台上设计和编码(不使用starling等)。

我正在动态地将movieClips(静态,非动画)转换为位图,并且工作正常。但我意识到这个过程bitmapData缓存在内存和大的形状,它需要大量的内存。然后我决定通过dispose()添加到阶段清除到bitmapData。但是它从舞台上移除了它所显示的任何地方。

我的代码;

var target:MovieClip = new Ex_mc2();
target.x=100;
target.y=300;
addChild(target);

var bounds:Rectangle = target.getBounds(this);
var bmpData:BitmapData = new BitmapData(Math.floor(bounds.width), Math.floor(bounds.height), true, 0);
var bmpMatrix:Matrix = target.transform.matrix;
bmpMatrix.translate(-bounds.x, -bounds.y); // Draw bitmap
bmpData.draw(target, bmpMatrix);

var bmp:Bitmap = new Bitmap(bmpData);
bmp.x=100;
bmp.y=300;
addChild(bmp);

removeChild(target);
//bmpData.dispose(); I want to use this and i dont want my bmp disappear 

搜索解决方案一周但我无法弄明白。 所以我的问题是;

我可以将movieClip转换为位图并释放到内存吗?比如添加一个静态png文件?

1 个答案:

答案 0 :(得分:0)

BitmapData - 实际上是屏幕上显示的内容。格式几乎与BMP相同,但字节顺序相反。 Bitmap只是一个显示容器,用于将图像内容输出到屏幕并提供常见的DisplayObject API。

因此,如果你使用BitmapData.dispose(),你实际上是在释放图像所占用的内存,显然之后Bitmap容器无法显示任何内容。