2

iPadで実行されるFlexアプリケーション(SDK 4.5.1)があります...ファイルをダウンロードし、ローカルディレクトリ(File.applicationStorageDirectoryなど)に配置してから、アプリケーション内のファイルを表示する必要があります。

したがって、私のテストアプリケーションでは、urlLoaderクラスを使用してpng画像をダウンロードしました。

これがダウンロードの完全なハンドラーです。

private function onComplete3(event:Event):void{
 try{
    var ba:ByteArray  = event.target.data as ByteArray;
    var file:File=File.applicationStorageDirectory.resolvePath("img.png");
    var pathFile:String = file.nativePath;
    var fileStream:FileStream = new FileStream();  
    fileStream.open(file, FileMode.WRITE);  
    fileStream.writeBytes(ba);  
    fileStream.addEventListener(Event.CLOSE, fileClosed);  
    fileStream.addEventListener(IOErrorEvent.IO_ERROR,function(e:IOErrorEvent):void{
       status0.text = "STATE : ERROR 3"
    });
    fileStream.close();     
    status0.text = "STATO : OK";
    path0.text = pathFile; 
    immagine0.source = pathFile; 
  catch(e:Error){
    status0.text = "STATE : ERROR 2"
  }
}

iPadでは、ダウンロードしたファイルが存在することを確認できますが、immagine0.source = pathFile(画像コンポーネント)という行を実行すると、何も表示されません...ファイルを書き込むことはできますが、読み取ることはできませんか?

4

2 に答える 2

5

6時間のデバッグとコーディングの後...私はこの問題を非常に簡単な解決策で解決しました...行を変更しました

var pathFile:String = file.nativePath;

var pathFile:String = file.url;

彼はこの方法でfile.urlを解決しました:

app-storage:/img.png

。今それは動作します!この投稿が他の誰かがこの問題を抱えているのに役立つことを願っています..すべてに感謝します

于 2011-11-14T20:51:03.340 に答える
0

次の2つの機能は、Flex4.5でファイルを読み書きすることです。

protected function button1_clickHandler(event:MouseEvent):void
{
    var file:File = File.applicationStorageDirectory.resolvePath("samples/test.txt");
    var stream:FileStream = new FileStream()
    stream.open(file, FileMode.WRITE);
    stream.writeUTFBytes(contents.text);
    stream.close();
}
protected function button2_clickHandler(event:MouseEvent):void
{
    var file:File = File.applicationStorageDirectory.resolvePath("samples/test.txt");
    var stream:FileStream = new FileStream()
    stream.open(file, FileMode.READ);
    results.text = stream.readUTFBytes(stream.bytesAvailable);
    stream.close();
}
于 2012-05-26T13:53:22.243 に答える