Flash AS3 xml arquivo de carga
-
05-07-2019 - |
Pergunta
Eu só estou tentando carregar uma bruxa arquivo XML pode ser anywere no hdd, isto é o que eu tenho feito para navegar, mas mais tarde, quando eu estou tentando carregar o arquivo que só ficaria no mesmo caminho do arquivo SWF
aqui é o código
package { import flash.display.Sprite; flash.events importação .; . Importação 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);
}
}
}
quando eu abrir um arquivo XML que não é ele mesmo diretório que o swf, dá-me um erro de arquivo unfound. Há algo que eu possa fazer? causar, por exemplo, para mp3 existe uma classe especial para carregar o arquivo, consulte http: / /www.flexiblefactory.co.uk/flexible/?p=46
graças
Solução
Uma vez que você está carregando um arquivo xml local, você vai querer usar FileStream.read () em vez de um URLRequest. Também nota que file.name vai apenas dar-lhe o nome do arquivo, e não o caminho completo, então o que você vai querer fazer é:
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();
}
Você pode querer ler a referência FileStream ( http: //livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filesystem/FileStream.html ), se você está abrindo um grande arquivo xml, você precisa lê-lo de forma assíncrona.
Outras dicas
Note que essa resposta só funciona para aplicativos 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();
Carregando um arquivo XML local. Pode ajudar alguém ...