2017-02-26 3 views
0

ウェブリンク経由で画像を表示するAS3コードにUIローダーがあります。ユーザー一度 インターネット接続なしでロードするために、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.sourceuiloader2.sourceにロードするにはどうすればよいですか?

EDIT

だから私はそれを試してみた:(まだデスクトップ上ではなく、自分の携帯電話のデバイス上でテスト)動作するようです

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アプリケーションのためにそれを行うべきではないと思いますか? もっと「アプリの互換性」を持たせるために変更する必要のあるコードを教えてください。それが格納もちろんUnhandled ioError:. text=Error #2035: URL Not Found. URL: app:/test.jpg

+0

1. ** AIR **のためにあなたが公開する場合 - ** AIRのために行く**、それはより多くの機能を備えています。そして、ちょっとした努力のために? Google> air save file>最初のリンク。 2.ファイルURLは「app:/test.jpg」ではないので、どこに保存したのかはわかりません。おそらくあなたは** FileReference.name **(ファイルを保存した後のもの)と** File.applicationDirectory.nativePath **を比較する必要があります。 – Organis

答えて

0

2/IがUiloaderにファイルをロードする方法をしますか(どのように自動的にパスを取得することができます「 例:?私はuiloader11.source = "test.jpg"; を試みたが、エラーあなたは指示に従ってURL、なぜそれがそうでなければあなたはのSharedObjectデータ型の制限されたリストを保存することができ

行う必要があります?を http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html#data

それはあなたに動作しない場合 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

だから、ウェブからの実際の画像をロードした後、あなたはLoader.loaderInfo.bytesで見つけることができのByteArrayとして、その内容を保存するためにありますURLLoaderでイメージソースを読み込むプランBがあります。URLLoader.dataFormatURLLoaderDataFormat.BINARY http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#loadBytes()

P.S.:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html#dataFormat

は、次に第2のスタートにあなたはLoader.loadBytes()メソッドのSharedObjectからこれらのイメージを復元することができますあなたのアプリケーションがAIR環境で実行されている場合、実際には、ローカルストレージにファイルSharedObjectの代わりにファイルを読み書きできます。オープンアプリ格納フォルダとのFileStreamを、見つけるためにFile.applicationStorageDirectory()を使用し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

関連する問題