1

StageWebView を使用して、iPhone アプリに mp4 および pdf ファイルをロードしています (iOS 用 Adob​​e air 3.2、Flash CS5.5)。

以下は、pdfファイルをロードするために使用しているコードです(mp4ファイルをロードするのと同じコード)。

ファイルを iPhone に保存する必要があるため、次にユーザーがアプリを開いたときに、ファイルが存在するかどうかを確認し、FileStream.open(filePath, FileMode.READ); を使用して読み込みます。StageWebView を使用して読み込んだファイルを保存する方法はありますか? そうでない場合、これを行う最善の方法は何ですか。

import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.filesystem.File;

var fPath:String = "http://www.bloomerangs.com/Axor/Water-Bath-Design Museum - short version.pdf";

var webView = new StageWebView();
webView.stage = stage;
webView.viewPort = new Rectangle(0, 32, 320, 480);
webView.addEventListener(Event.COMPLETE, onComplete);
webView.loadURL( fPath );

function onComplete(event:Event):void{
    trace("event = ", event);
    trace("event.target = ", event.target);
}

前もって感謝します!:)

4

2 に答える 2

0

Pavelfljōtに感謝します。

ファイルのダウンロードにURLLoaderを使用しました。

import flash.events.Event;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.filesystem.File;

var urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener(ProgressEvent.PROGRESS, onLoadFileProgress);
urlLoader.addEventListener(Event.COMPLETE, onLoadFileComplete);
urlLoader.load(new URLRequest("http://www.yourdomain.com/videos/myVideo.mp4"));

function onLoadFileProgress(e:ProgressEvent):void{
    var loadedPct:uint = Math.round(100 * (e.bytesLoaded / e.bytesTotal));
    trace_txt.text = loadedPct + "% loaded.";
}

function onLoadFileComplete(e:Event):void{
    trace_txt.text = "File loaded";
    var file:File = File.documentsDirectory.resolvePath("myVideo_copied.mp4")
    var fileStream:FileStream = new FileStream();
    fileStream.openAsync(file, FileMode.WRITE);
    fileStream.addEventListener(OutputProgressEvent.OUTPUT_PROGRESS, outputProgressHandler);
    fileStream.addEventListener(Event.CLOSE, onVideoSaveClose);
    fileStream.writeBytes(e.target.data);
    fileStream.close();
}
function outputProgressHandler(event:OutputProgressEvent):void{
    if (event.bytesPending == 0){
        trace_txt.text = "File is completely written";
    }
}

var stageWebView = new StageWebView();
function onVideoSaveClose(event:Event):void {
    trace("closed");
    stageWebView.stage = this.stage;
    stageWebView.viewPort = new Rectangle(0, 0, 1024, 768);
    var file:File = File.documentsDirectory.resolvePath("myVideo_copied.mp4")
    stageWebView.loadURL(file.url);
}
于 2012-04-14T11:15:27.963 に答える
0

帯域幅を節約したい (カップル ファイルをキャッシュするため) ですね。次に、ファイルを File.applicationStorageDirectory にダウンロード (保存) し (URLStream を使用)、後で StageWebView ( http://forums.adobe.com/thread/928558 )で開くことができます。

AIR for iOs を使用したファイルのダウンロードと保存

于 2012-04-13T13:43:05.157 に答える