У меня есть класс AS 3.0, который загружает файл JSON при использовании URLRequest.
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 вызывается до того, как она закончит загрузку, программа завершится ошибкой.
Как я могу заставить класс ждать приема вызовов функций до тех пор, пока файл не будет загружен?