iOS 8 - 打开相机胶卷库中的Starling上下文丢失

时间:2015-05-29 12:46:39

标签: actionscript-3 ipad ios8 flash-builder

我正在使用as3在Flash Builder中的iOS上创建应用程序。 该应用使用Starling插件:http://wiki.starling-framework.org/start

我的应用允许用户拍照并自定义。在iOS 8上尝试访问相机或相机胶卷时,我收到错误消息"应用程序丢失了设备上下文!"。

在Android上,我可以用这一行解决这个问题:

            Starling.handleLostContext = true;

但有人告诉我,iOS永远不会失去背景(我还没有看到它在iOS 7或更低版​​本上失去了背景)。

如果我在iOS 8中包含该行,则应用程序会在同一点崩溃,但在这种情况下,应用程序会完全崩溃,并将我返回到主屏幕,而不是显示上一条消息。

我听说iOS 8在使用64位/ 32位插件和扩展方面存在限制,但我没有在这个特定的应用程序中使用任何ANE。是否存在32位可能导致问题或与ANE严格相关的其他区域?

我不会在iOS 7或更低版​​本或Android上出现此错误,除非我将handleLostContext设置为false。

Adob​​e Scout未提供任何错误消息。

任何帮助都将不胜感激。

更新: 此代码调用相机功能:

var cameraRoll:CameraRoll = new CameraRoll(); 
if(CameraRoll.supportsBrowseForImage) {
    trace("camera rolling");
    cameraRoll.addEventListener(MediaEvent.SELECT, imageSelected); 
    cameraRoll.addEventListener(flash.events.Event.CANCEL, browseCanceled); 
    cameraRoll.addEventListener(flash.events.ErrorEvent.ERROR, galleryMediaError);
    cameraRoll.browseForImage();
} else { 
    var alert:Alert = Alert.show("Image browsing is not supported on this device.", "Error", new ListCollection([{label:"OK"}]));   
}

更新2:

我已经从AIR SDK 17切换到16,现在它更稳定但有类似的问题

2 个答案:

答案 0 :(得分:1)

iOS中的相机胶卷存在已知问题,这会导致stage3d丢失上下文。你的选择:

  1. 设置Starling.handleLostContext = true,可能会丢失iOS中的上下文。
  2. 找到一个处理相机卷而不会丢失上下文的ANE(据说这些存在)。
  3. 更多信息: http://forum.starling-framework.org/topic/starling-and-cameraui#post-77339

答案 1 :(得分:0)

我可以在ios 8.3上确认使用AIR 18打开CameraRoll时没有丢失Context3D。

  1. 确保使用的是AIR 18。
  2. 确保您使用的是最新的Starling版本。
  3. 如果问题持续存在,可能是Starling是原因。

    1. 报告问题并等待更新。
    2. 请求CameraRoll时不要使用Starling(关闭Starling并显示正常的位图)。
    3. 不要使用Starling并使用其他引擎或创建自己的引擎。