【问题标题】:Flash AS3 load file xmlFlash AS3 加载文件 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

谢谢

【问题讨论】:

    标签: xml flash actionscript-3 file load


    【解决方案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 文件。 它可能会帮助某人......

        【讨论】:

          猜你喜欢
          • 2011-10-01
          • 1970-01-01
          • 2010-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          • 2012-04-15
          • 2012-01-05
          相关资源
          最近更新 更多