Adobe Air Mobile + Camera - 保留图像

时间:2014-01-03 19:45:00

标签: flex air camera

我有一个页面显示有关对象的数据。页面顶部是图标的空间,显示该对象的图片。点击此图标会弹出一个新页面,允许用户拍摄新照片,并将其保存为对象的临时新图片(不会放入数据库,但应该保留在会话中)

初始页面:

private var source:Object = new Object();

protected function onInitialize():void {
   source = navigator.poppedViewReturnedObject;
}

稍后为图像设置来源时......

if (source != null) {
   pic.source = source.object;
}
else {
   pic.source = "no_picture_available_image.png";
}

第二页(用户可以拍照,查看新图片):

[Bindable]
private var imageSource:Object = null;

<s:Image id="pic" width="90%" height="75%" horizontalCenter="0" source="{imageSource}" />

拍照后......

protected function mediaPromiseLoaded(evt:Event):void {
   var loaderInfo:LoaderInfo = evt.target as LoaderInfo;
   imageSource = loaderInfo.loader;
}

这确实显示了在此页面上正确拍摄的照片。

要返回旧页面,我使用navigator.popView,然后使用:

override public function createReturnObject():Object {
   return imageSource;
}

不幸的是,它不起作用。从navigator.poppedViewReturnedObject读取时,imageSource不为null,但不显示图像。

弹出视图后LoaderInfo是否仍然存在?相机图片是否未自动保存?我无法找到任何这些问题的答案,我无法在当前环境中使用手机进行调试。

2 个答案:

答案 0 :(得分:0)

在考虑了这一点之后,不要将LoaderInfo.loader作为poppedViewReturnedObject返回。如果我没记错的话,DisplayObject只能设置为一个 Image的来源。相反,请返回LoaderInfo.loader.content.bitmapDataBitmapData应该是用于显示图像的原始数据。可以重复使用此数据来创建图像,并可将其设置为Image的源。

答案 1 :(得分:0)

问题原来是在我的第一页的图像声明中 - 我没有设置宽度。看起来,正在显示的对象无法处理没有指定宽度的内容。

请注意,传回加载程序确实可以正常工作。