在我正在開發的Flash遊戲中,有一些由外部XML文件設置的設置。當我通過Flash IDE運行SWF文件時,它加載正常。如果我運行與投影儀(.exe)相同的文件或獨立的SWF文件,則不會加載XML文件。ActionScript 3是否需要用於XML的錯誤事件處理程序?
我的(意外的)修復是將錯誤事件偵聽器分配給加載器對象。當我再次發佈文件時,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);
}
}
讓我知道,如果你遇到了這一點,或者如果你能提供一些線索照亮可能發生的事情。謝謝!
編輯:
這裏是一個不不工作的代碼。 (我還編輯,做工作,以顯示所有我拿出其他位,只是他們可能會影響它的情況下的代碼):
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);
}
}
是的,我總是執行本地網絡驅動器中的文件。將文件移動到我的桌面並在那裏測試具有相同的結果。 – user54331 2009-01-29 15:17:52