我有一個AS 3.0類,使用URLRequest加載JSON文件。Actionscript 3:強制程序等待,直到事件處理程序被調用
package {
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
public class Tiles extends MovieClip {
private var mapWidth:int,mapHeight:int;
private var mapFile:String;
private var mapLoaded:Boolean=false;
public function Tiles(m:String) {
init(m);
}
private function init(m:String):void {
// Initiates the map arrays for later use.
mapFile=m;
// Load the map file in.
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, mapHandler);
loader.load(new URLRequest("maps/" + mapFile));
}
private function mapHandler(e:Event):void {
mapLoaded=true;
mapWidth=3000;
}
public function getMapWidth():int {
if (mapLoaded) {
return (mapWidth);
} else {
return(-1);
}
}
}
}
當文件被加載完成,則mapHandler事件進行更改類的屬性,而這又是使用getMapWidth函數訪問。但是,如果getMapwidth函數在完成加載之前被調用,程序將失敗。
如何才能讓該類等待接受函數調用,直到文件加載完成爲止?
如果在完成加載文件之前調用getMapWidth()函數,爲什麼程序會失敗? 是不是照顧,通過遞歸getMapWidth()? – 2010-04-03 21:28:48
哎呀,忘了編輯那條線。調用getMapWidth()遞歸地給出了堆棧溢出錯誤,所以這是不可能的。 – 2010-04-03 21:35:02