我有一个页面显示有关对象的数据。页面顶部是图标的空间,显示该对象的图片。点击此图标会弹出一个新页面,允许用户拍摄新照片,并将其保存为对象的临时新图片(不会放入数据库,但应该保留在会话中)
初始页面:
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是否仍然存在?相机图片是否未自动保存?我无法找到任何这些问题的答案,我无法在当前环境中使用手机进行调试。
答案 0 :(得分:0)
在考虑了这一点之后,不要将LoaderInfo.loader
作为poppedViewReturnedObject
返回。如果我没记错的话,DisplayObject
只能设置为一个 Image
的来源。相反,请返回LoaderInfo.loader.content.bitmapData
。 BitmapData
应该是用于显示图像的原始数据。可以重复使用此数据来创建图像,并可将其设置为Image
的源。
答案 1 :(得分:0)
问题原来是在我的第一页的图像声明中 - 我没有设置宽度。看起来,正在显示的对象无法处理没有指定宽度的内容。
请注意,传回加载程序确实可以正常工作。