Во флеш-игре, которую я разрабатываю, есть некоторые настройки, которые устанавливаются внешним XML-файлом. Когда я запускаю SWF-файл через Flash IDE, он загружается нормально. Если я запускаю тот же файл, что и проектор (.exe) или независимый SWF-файл, он не загружает XML-файл.
Мое (неожиданное) исправление заключалось в назначении прослушивателя событий error для объекта загрузчика. Когда я снова опубликовал файл, XML-файл правильно загружен в проектор и автономные SWF-файлы. (С тех пор я убедился, что комментирование обработчика событий ошибки восстанавливает ошибку).
Вот этот блок кода ( с удаленным посторонним кодом и удалением вызовов функций ):
public function getSettings():void {
outputBox = getChildByName("output_box") as TextField;
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, loadXML, false, 0, true);
xmlLoader.addEventListener(ErrorEvent.ERROR, function (e:Error)
{ outputBox.appendText(e.message) });
try {
xmlLoader.load(xmlPath);
}
catch(err:Error) {
trace(err.message);
outputBox.appendText(err.message);
checkChances("0");
}
function loadXML(e:Event):void {
try {
xmlData = new XML(e.target.data);
var chances:String = xmlData.chances.text();
var dbURL:String = xmlData.database.text();
trace("Chances are set to: " + chances);
trace("Database URL is set to: " + dbURL);
outputBox.appendText("Chances are set to: " + chances);
}
catch(err:Error) {
outputBox.appendText(err.message);
}
checkChances(chances);
dbPath = new URLRequest(dbURL);
}
}
Дайте мне знать, если вы столкнулись с этим, или если вы можете пролить свет на то, что может происходить. Спасибо!
EDIT:
Вот код, который не работает. (Я также отредактировал код, который работает, чтобы показать все остальные биты, которые я вынул, на случай, если они могут повлиять на это):
public function getSettings():void {
outputBox = getChildByName("output_box") as TextField;
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, loadXML, false, 0, true);
/*xmlLoader.addEventListener(ErrorEvent.ERROR, function (e:Error)
{ outputBox.appendText(e.message) });*/
try {
xmlLoader.load(xmlPath);
}
catch(err:Error) {
trace(err.message);
outputBox.appendText(err.message);
checkChances("0");
}
function loadXML(e:Event):void {
try {
xmlData = new XML(e.target.data);
var chances:String = xmlData.chances.text();
var dbURL:String = xmlData.database.text();
trace("Chances are set to: " + chances);
trace("Database URL is set to: " + dbURL);
outputBox.appendText("Chances are set to: " + chances);
}
catch(err:Error) {
outputBox.appendText(err.message);
}
checkChances(chances);
dbPath = new URLRequest(dbURL);
}
}