【发布时间】:2016-07-30 02:01:15
【问题描述】:
我终于尝试将我的 Flash 游戏移植到应用程序中,从 iOS 开始。我被困在图像保存功能上。在 swf 中,我使用 jpegencoder 保存到桌面服务器。经过一些研究,该代码似乎仍然可以在移动设备上运行,所以我尝试了它,但在 Adobe AIR 的 iPhone 上进行测试时,它似乎没有做任何事情(按钮注册了一次点击,但没有图像可以发现,没有发生任何事情的通知,没有请求访问图像的权限等)。这是旧代码:
saveToDisc.addEventListener(MouseEvent.CLICK, saveToDiscSave);
function saveToDiscSave(e:MouseEvent):void {
this.visible = false; //hides menu
var bitmapData:BitmapData = new BitmapData(1242,1864);
bitmapData.draw(MovieClip(root));
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var byteArray:ByteArray = jpgEncoder.encode(bitmapData);
var fileReference:FileReference=new FileReference();
fileReference.save(byteArray, "Dinogeddon-DollDivine.jpg");
//this.visible = true; //returns menu. commented out to see if click registered
}
因此,经过更多研究,我发现 CameraRoll 代码看起来很简单,就像是专门为 iOS 制作的一样。所以我尝试了,但我遇到了同样的问题:没有证据表明发生了什么事。没有图像保存,没有错误,没有权限请求。
saveToDisc.addEventListener(MouseEvent.CLICK, saveToDiscSave);
function saveToDiscSave(e:MouseEvent):void {
this.visible = false;
var cameraRoll:CameraRoll = new CameraRoll();
var bitmapData:BitmapData = new BitmapData(1242,1864);
bitmapData.draw(MovieClip(root));
cameraRoll.addBitmapData(bitmapData);
//this.visible = true;
}
就像,我什至不知道我哪里出错了。处于测试模式的应用程序甚至可以保存图像吗?我应该期待弹出某种通知吗?保存到手机的内容是否有大小限制?暂停
【问题讨论】:
-
您想要相机胶卷中的图像吗?或者只是存储在设备上的某个位置,以后可以再次检索它? FileReference 我认为不适用于移动设备,您必须使用 FileStream 和 File 类保存到应用程序存储目录。你确定
CameraRoll.supportsAddBitmapData是真的吗? -
另外,您应该监听错误,因为相机胶卷 addBitmapData 方法是一个异步操作。
cameraRoll.addEventListener(ErrorEvent.ERROR, handleMyError);,也可以监听Event.COMPLETE事件。 -
应用程序不需要图像。仅供用户自己阅读。我不在乎它是否专门用于相机胶卷..我只是希望将它保存在这种事情习惯的任何地方?
-
相机胶卷是最合适的地方。侦听错误并检查以确保支持 CameraRoll(但应始终在 iOS 上)。
-
在设备上测试时如何监听错误?我会在我电脑上的模拟器上试一试,但它会测试游戏的超级巨无霸并在我的显示器上切断下半部分,所以我无法真正测试大多数按钮。这很令人沮丧:/
标签: ios actionscript-3 air bitmapdata animate-cc