Flash AS3 加载文件 xml
Posted
技术标签:
【中文标题】Flash AS3 加载文件 xml【英文标题】:Flash AS3 load file xml 【发布时间】:2010-11-15 11:41:11 【问题描述】:我只是想加载一个 xml 文件,它可以在硬盘中,这是我浏览它时所做的,但后来当我尝试加载文件时,它只会在相同的路径中查找swf文件
这里是代码
包 导入 flash.display.Sprite; 导入 flash.events.; 导入 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);
当我打开一个与 swf 不是同一目录的 xml 文件时,它给了我一个未找到的文件错误。 有什么我可以做的吗? 例如,对于 mp3,有一个特殊的类用于加载文件,请参阅http://www.flexiblefactory.co.uk/flexible/?p=46
谢谢
【问题讨论】:
【参考方案1】:请注意,该答案仅适用于 AIR 应用程序!
【讨论】:
【参考方案2】:由于您正在加载本地 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 文件,则需要异步读取它。
【讨论】:
【参考方案3】: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 文件。 它可能会帮助某人......
【讨论】:
以上是关于Flash AS3 加载文件 xml的主要内容,如果未能解决你的问题,请参考以下文章