Domanda

Sto solo provando a caricare un file xml che può essere ovunque nel hdd, questo è quello che ho fatto per sfogliarlo, ma più tardi quando sto provando a caricare il file sembrerebbe solo nello stesso percorso del file swf

ecco il codice

pacchetto {     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);
    }
}

}

quando apro un file xml che non si trova nella stessa directory di swf, mi dà un errore di file infondato. c'è qualcosa che posso fare? perché ad esempio per mp3 esiste una classe speciale per il caricamento del file, vedi http: / /www.flexiblefactory.co.uk/flexible/?p=46

grazie

È stato utile?

Soluzione

Dato che stai caricando un file xml locale, ti consigliamo di utilizzare FileStream.read () anziché un URLRequest. Nota anche che file.name ti darà solo il nome del file, non il percorso completo, quindi quello che vorrai fare è:

 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();
}

Potresti voler leggere il riferimento FileStream ( http: //livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filesystem/FileStream.html ), se stai aprendo un file XML di grandi dimensioni, dovrai leggerlo in modo asincrono.

Altri suggerimenti

Nota che quella risposta funziona solo per le applicazioni 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();

Caricamento di un file XML locale. Potrebbe aiutare qualcuno ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top