2016-11-09 74 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 /文件夾中並不常見。