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

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top