2016-11-09 80 views
0

我今天遇到了这个问题,大约4个小时,我无法在AS3中加载XML文件。保持给我一个流错误。似乎无法找到文件路径。所以我抓住了错误:AS3中的文件路径清理FlashDevelop

Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: file:///C|/Users/Hmmm/Desktop/Flash%20Projects/Jumper/bin/testxml.xml 
at com::LoadXML()[C:\Users\Hmmm\Desktop\Flash Projects\Jumper\src\com\LoadXML.as:14] 
at com::MainState()[C:\Users\Hmmm\Desktop\Flash Projects\Jumper\src\com\MainState.as:20] 

然后我注意到 - 跳线/斌/ testxml.xml - 它寻找它在bin文件夹...为什么?所以我把文件移到了bin和voila上 - 它工作正常。问题是 - 我不希望它在bin文件夹中。

这里是我的基本XML装载机类:

package com 
{ 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.events.EventDispatcher; 

public class LoadXML extends EventDispatcher 
{ 
    private var dataXML:XML; 

    public function LoadXML(xmlFileName:String):void 
    { 
     var xmlLoader:URLLoader = new URLLoader(new URLRequest(xmlFileName)); 
     xmlLoader.addEventListener(Event.COMPLETE, loadedCompleteHandler); 
    } 

    private function loadedCompleteHandler(e:Event):void 
    { 
     e.target.removeEventListener(Event.COMPLETE, loadedCompleteHandler); 
     try { 
      dataXML = new XML(e.target.data); 
     } catch(e:Error) { 
      throw new Error("Error loading XML"); 
     } 
    } 
} 
} 

而且从另一个类(同一文件夹)我给它的呼叫:

public var xmlloader:LoadXML = new LoadXML("testxml.xml"); 

可有人请阐明如何引用此文件... 。我最终希望多个xml文件存储游戏的物品细节,敌方位置等内容。我想要的示例路径是:src/com/maps/mapData.xml ---- 任何帮助表示赞赏。谢谢。

+0

读这有一点帮助。 http://stackoverflow.com/questions/13298843/cant-get-my-relative-paths-to-work-with-flashdevelop-and-flex public var xmlloader:LoadXML = new LoadXML(“../ src/com/testxml.xml“); – PHaZerous

+0

为什么你不想在bin文件夹中找到这个文件?您希望将其存储在哪里? – Brian

回答

0

可以通过指定的完整路径,从任意位置加载XML:

new LoadXML("C:/Users/Hmmm/Desktop/Flash Projects/Jumper/src/com/testxml.xml");

或通过在相对路径指定父目录:

new LoadXML("../src/com/testxml.xml");

请注意,这是在将项目部署到生产中时,将资产放在〜/ src /文件夹中并不常见。