Очистка пути к файлу в AS3 FlashDevelop
У меня была эта проблема в течение приблизительно 4 часов сегодня, когда я не мог загрузить файл XML в AS3. Продолжал давать мне сообщение об ошибке потока. Похоже, он не может найти путь к файлу. Поэтому я уловил ошибку:
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]
Тогда я заметил - Jumper/bin/testxml.xml - он ищет его в папке bin... Почему?? Поэтому я переместил файл в корзину и вуаля - все работает. Проблема в том, что я не хочу этого в папке 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 ---- Любая помощь приветствуется. Спасибо.
1 ответ
Вы можете загрузить XML из произвольного места, указав полный путь:
new LoadXML("C:/Users/Hmmm/Desktop/Flash Projects/Jumper/src/com/testxml.xml");
или указав родительский каталог в относительном пути:
new LoadXML("../src/com/testxml.xml");
Обратите внимание, что при развертывании проекта в производство ресурсы редко помещаются в папку ~/src/.