我的AS3代码中有一些UIloader,它通过网络链接显示图像。
uiloader1.source = "http://www.mywebsite/image1.jpg";
uiloader2.source = "http://www.mywebsite/image2.jpg";
一旦用户通过互联网连接打开应用程序,我希望他能够在没有任何互联网连接的情况下再次打开它,但仍然可以显示图像。
我想到了类似的东西:
var savedImage:SharedObject;
savedImage= SharedObject.getLocal("ImagesFolder");
if (monitor.available || savedImage.data.images == "null") {
uiloader1.source = "http://www.mywebsite/image1.jpg";
uiloader2.source = "http://www.mywebsite/image2.jpg";
savedImage.data.loader1 = uiloader1.source;
savedImage.data.loader2 = uiloader2.source;
}
else {
uiloader1.source = savedImage.data.loader1;
uiloader2.source = savedImage.data.loader2;
}
但它不起作用,因为它保存了图像的链接而不是实际的图像。
知道如何将图片保存到文件中并告诉uiloader1.source
和uiloader2.source
加载它们?
修改
所以我试过了:
uiloader10.source = "http://www.myWebsite/image1.jpg";
uiloader10.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler(event:Event):void {
var bitmapData:BitmapData = new BitmapData(uiloader10.width,uiloader10.height);
bitmapData.draw(uiloader10);
var jpgencoder:JPGEncoder = new JPGEncoder(100);
var mybyte:ByteArray = jpgencoder.encode(bitmapData);
var myfile:FileReference = new FileReference();
myfile.save(mybyte,"test.jpg");
}
它似乎有效(在桌面上测试,而不是在我的手机设备上测试)。
1 /但您认为我不应该为AIR应用程序执行此操作吗? 你能告诉我我应该改变的代码,以使它更符合“app兼容”吗?
2 /如何在Uiloader中加载文件(如何自动检索路径?“
示例:我尝试过uiloader11.source = "test.jpg";
但错误:Unhandled ioError:. text=Error #2035: URL Not Found. URL: app:/test.jpg
答案 0 :(得分:0)
当然它按照你的指示存储了URL,为什么要这样做呢?
您可以在 SharedObject 中存储有限的数据类型列表: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html#data
因此,在从网络加载实际图片后,您要将其内容存储为 ByteArray ,可以在 Loader.loaderInfo.bytes 中找到: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#loaderInfo http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html#bytes
如果这不起作用,您可以通过将 URLLoader.dataFormat 设置为 URLLoaderDataFormat.BINARY ,让B计划使用 URLLoader 加载图像源。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html#dataFormat
然后在第二次启动时,您可以使用 Loader.loadBytes()方法从 SharedObject 恢复这些图像: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#loadBytes()
PS 如果您的应用在 AIR 环境下运行,您实际上可以将文件读/写到本地存储而不是垃圾邮件 SharedObject ,其数据是不应该去那里。使用 File.applicationStorageDirectory 找到应用存储文件夹, FileStream,open(), FileStream.readBytes(), FileStream.writeBytes ()分别打开,读取,写入文件。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html#applicationStorageDirectory http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/FileStream.html