2012-04-12 19 views
1

Ich möchte in der Lage sein, lokale SWF-Dateien in einer AIR-Desktopanwendung zu laden. Die SWF-Dateien befinden sich außerhalb der Anwendung selbst auf der Festplatte des Benutzers.Lokale SWF-Datei in AIR laden

Der Code Ich verwende ist wie folgt:

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
loader.load(new URLRequest("/Users/Oliver/Documents/sample.swf")); 

Die Datei existiert. Ich kann seine Existenz unter Verwendung der folgenden in Unix testen:

$ ls /Users/Oliver/Documents/sample.swf

jedoch die Anwendung wirft den Fehler:

Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.

Wenn ich die gleiche Datei von einem Web-Speicherort zu laden versuchen, (zB http://127.0.0.1/sample.swf), ist die Ladung erfolgreich.

Ich verstand, dass AIR sowohl lokale als auch Remote-Dateien laden konnte. Ist das nicht der Fall? Ironischerweise lese, schreibe und lösche ich an anderer Stelle in meiner Anwendung beliebige Dateien aus dem lokalen Dateisystem ohne Probleme. Aber ich kann sie nicht laden?

Antwort

3

Ich glaube, das Problem ist mit Ihrem Weg. Versuchen Sie, die Dateiklasse zu verwenden, um einen Pfad zu Ihrem swf zu erhalten.

var f:File = File.documentsDirectory 
f = f.resolvePath("sample.swf"); 
/* ----- */ 

loader.load(new URLRequest(f.url)); 
+0

Das ist der Trick! Vielen Dank! Es scheint, dass der Loader das Schema file: // URI (oder http: // für Remote-Dateien) verwenden muss. Ich habe Ihren Code bearbeitet, da er einen kleinen Fehler enthielt. –

+0

Whoops müssen Sie setzen f = f.resolvePath ("sample.swf"); – francis

+1

Durch die starke Verschlüsselung des Benutzerkontos Oliver wird diese Anwendung nur auf Ihrem Computer funktionieren – francis