Flash AS3ロードファイルxml
-
05-07-2019 - |
質問
XMLファイルをロードしようとしていますが、これはhdd内にある可能性がありますが、これはブラウズするために行ったことですが、後でファイルをロードしようとすると、同じパスにしか見えませんswfファイルの
コードはこちら
package { import flash.display.Sprite; import flash.events。; import flash.net。;
public class cargadorXML extends Sprite {
public var cuadro:Sprite = new Sprite();
public var file:FileReference;
public var req:URLRequest;
public var xml:XML;
public var xmlLoader:URLLoader = new URLLoader();
public function cargadorXML() {
cuadro.graphics.beginFill(0xFF0000);
cuadro.graphics.drawRoundRect(0,0,100,100,10);
cuadro.graphics.endFill();
cuadro.addEventListener(MouseEvent.CLICK,browser);
addChild(cuadro);
}
public function browser(e:Event) {
file = new FileReference();
file.addEventListener(Event.SELECT,bien);
file.browse();
}
public function bien(e:Event) {
xmlLoader.addEventListener(Event.COMPLETE, loadXML);
req=new URLRequest(file.name);
xmlLoader.load(req);
}
public function loadXML(e:Event) {
xml=new XML(e.target.data);
//xml.name=file.name;
trace(xml);
}
}
}
swfと同じディレクトリではないxmlファイルを開くと、unfound fileエラーが表示されます。 何か私にできることはありますか? たとえば、mp3の場合、ファイルをロードするための特別なクラスがあります。 http:/を参照してください。 /www.flexiblefactory.co.uk/flexible/?p=46
ありがとう
解決
ローカルxmlファイルをロードするため、URLRequestではなくFileStream.read()を使用する必要があります。また、file.nameはフルパスではなくファイルの名前を提供するだけなので、次のようにします。
public function bien(e:Event) {
var file:File = File.documentsDirectory.resolvePath(e.target);
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
}
FileStreamリファレンス( http: //livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filesystem/FileStream.html )、大きなxmlファイルを開く場合は、非同期で読み取る必要があります。
他のヒント
その回答はAIRアプリケーションでのみ機能することに注意してください!
var cuadro:Sprite = new Sprite();
var file:FileReference;
var xml:XML;
function cargadorXML() {
cuadro.graphics.beginFill(0xFF0000);
cuadro.graphics.drawRoundRect(0,0,100,100,10);
cuadro.graphics.endFill();
cuadro.addEventListener(MouseEvent.CLICK,browser);
addChild(cuadro);
}
function browser(e:Event) {
file = new FileReference();
file.addEventListener(Event.SELECT,bien);
file.browse();
}
function bien(e:Event) {
file.addEventListener(Event.COMPLETE, loadXML);
file.load();
}
function loadXML(e:Event) {
xml = new XML(e.target.data);
trace(xml);
}
cargadorXML();
ローカルXMLファイルの読み込み。 それは誰かを助けるかもしれない...
所属していません StackOverflow