我已经尝试解决问题大约一个星期了。谷歌搜索无济于事。我目前正在使用iOS / Android应用程序,该应用程序在游戏中具有捕获屏幕截图并将其显示在移动设备的图库中的功能。
我正在使用CameraRoll对象,问题是屏幕上的某些对象已应用了平滑处理。但是,CameraRoll屏幕截图忽略了此。这使得最终的屏幕快照中有些物体带有锯齿。
谷歌搜索时,我发现有很多人在寻求同一问题的帮助,但没有答案。
任何帮助深表感谢。
最佳答案
由于默认情况下禁用对位图进行平滑处理(因此需要占用更多的CPU),因此Flash中的锯齿现象很常见。我建议从CameraRoll MediaEvent.SELECT事件创建一个新的位图。在内部,它应返回MediaPromise object的event.data
。在其中,您应该找到一个只读的 file
属性,可以在其中找到图像。
然后,只需进行平滑处理即可创建新图像。
var img:Bitmap = new Bitmap();
img.bitmapData = file.bitmapData;
img.smoothing = true;
addChild(img);
我以前从未在移动设备上尝试过此操作,但我相信您遇到过it's a common issue。
附录:
如果您对基于系统的屏幕截图服务有疑问,可以使用纯AS3创建自己的截图服务。逻辑上,AS3应该对舞台进行逐像素的块复制(从而尊重图像的平滑值)。
尝试这个:
var myBitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
myBitmapData.draw(stage);