我只是想加载一个xml文件,这可能是hdd中的任何一个,这是我所做的浏览它,但后来当我试图加载文件时它只会看到相同的路径swf文件
这是代码
包{ 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);
}
}
}
当我打开一个xml文件,它不是与swf相同的目录时,它会给我一个不正确的文件错误。 有什么我可以做的吗? 例如,对于mp3,有一个用于加载文件的特殊类,请参阅http://www.flexiblefactory.co.uk/flexible/?p=46
感谢
答案 0 :(得分:3)
请注意,该答案仅适用于AIR应用程序!
答案 1 :(得分:1)
由于您正在加载本地xml文件,因此您需要使用FileStream.read()而不是URLRequest。另请注意,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文件,则需要异步读取它。
答案 2 :(得分: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();
加载本地XML文件。 它可能对某人有帮助......