0

我正在使用带有 AIR 的 Flash CS6 开发手机游戏。也在同一平台上设计和编码(不使用八哥等)。

我正在将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 

寻找解决方案一周,但我无法弄清楚。所以我的问题是;

我可以将movieClips转换为位图并释放内存吗?就像添加一个静态 png 文件一样?

4

1 回答 1

0

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

所以,如果你使用BitmapData.dispose(),你实际上是在释放 image 占用的内存,显然之后Bitmap容器就没有任何东西可以显示了。

于 2013-07-27T11:48:05.757 回答