我已经尝试解决一个问题大约一个星期了。谷歌搜索无济于事。我目前正在开发一个 iOS/Android 应用程序,该应用程序在游戏中有一个功能,可以截取屏幕截图并将其显示在移动设备的图库中。
我正在使用 CameraRoll 对象,问题是屏幕上的某些对象应用了平滑处理。但是 CameraRoll 屏幕截图忽略了这一点。这使得生成的屏幕截图有一些带有锯齿的对象。
我在谷歌搜索时发现了很多关于同一问题的求助,但没有答案。
非常感谢任何帮助。
最佳答案
flash 中的锯齿很常见,因为位图上的平滑在默认情况下是禁用的(更多 cpu 密集型)。我建议从 CameraRoll MediaEvent.SELECT 创建一个新位图事件。在内部,它应该返回 event.data
这是一个 MediaPromise object .在里面,你应该找到一个只读的 file
您应该可以在其中找到图像的属性。
然后只需创建具有平滑效果的新图像即可。
var img:Bitmap = new Bitmap();
img.bitmapData = file.bitmapData;
img.smoothing = true;
addChild(img);
我以前从未在移动设备上尝试过,但是 it's a common issue我相信你遇到了。
附录:
如果您对基于系统的屏幕截图服务有疑问,您可以使用纯 AS3 创建您自己的屏幕截图服务。逻辑是,AS3 应该对舞台进行逐像素 block 复制(从而尊重图像的平滑值)。
试试这个:
var myBitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
myBitmapData.draw(stage);
关于android - AS3 AIR(ios 和 android)CameraRoll 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15642343/