我正在使用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文件?
答案 0 :(得分:0)
BitmapData
- 实际上是屏幕上显示的内容。格式几乎与BMP相同,但字节顺序相反。 Bitmap
只是一个显示容器,用于将图像内容输出到屏幕并提供常见的DisplayObject API。
因此,如果你使用BitmapData.dispose()
,你实际上是在释放图像所占用的内存,显然之后Bitmap
容器无法显示任何内容。