2009-07-30 11 views
0

Je suis juste en train de charger un fichier xml qui peut être n'importe où dans le disque dur, c'est ce que j'ai fait pour le parcourir, mais plus tard quand j'essaye de charger le fichier regarder dans le même chemin du fichier swfFlash AS3 charger le fichier xml

voici le code

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

}

quand j'ouvre un fichier xml qui nest pas fait le même répertoire que le swf, il me donne une erreur de fichier introuvable. Y a-t-il quelque chose que je puisse faire? la cause par exemple pour mp3 il y a une classe spéciale pour charger le fichier, voir http://www.flexiblefactory.co.uk/flexible/?p=46

grâce

Répondre

1

Depuis que vous chargez un fichier xml local, vous aurez envie d'utiliser FileStream.read() plutôt que une URLRequête. Notez également que file.name va vous donner le nom du fichier, et non pas le chemin complet, donc ce que vous voulez faire est:

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

Vous pouvez lire la référence FileStream (http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/filesystem/FileStream.html), Si vous ouvrez un grand fichier xml, vous devez le lire de manière asynchrone.

3

Notez que cette réponse ne fonctionne que pour les applications AIR!

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

Chargement d'un fichier XML local. Il pourrait aider quelqu'un ...

Questions connexes