我有一个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