Flash ActionScript3:强制程序等待事件处理程序被调用
我有一个AS 3.0类,它使用URL请求加载JSON文件Flash ActionScript3:强制程序等待事件处理程序被调用,flash,actionscript-3,flash-cs4,Flash,Actionscript 3,Flash Cs4,我有一个AS 3.0类,它使用URL请求加载JSON文件 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 {
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函数,程序将失败
如何使类在加载文件之前等待接受函数调用
private function mapHandler(e:Event):void {
if (mapLoaded) {
mapLoaded=true;
mapWidth=3000;
return (mapWidth);
} else {
getMapWidth()
}
}
public function getMapWidth():int
return(-1);
}
这可能会解决您的问题,为什么不需要它却要在getMapWidth中检查它呢
这可能会解决您的问题,为什么不需要它却要在getMapWidth中检查它。好的,所以我知道我需要做什么。问题在于我的主要时间线上的代码: tracebg.getMapWidth 我忘了代码只执行一次,在主时间线上没有事件侦听器,如下所示
stage.addEventListener(Event.ENTER_FRAME, n);
function n(e:Event):void
{
trace(bg.getMapWidth());
}
现在,每帧返回一次宽度,并且一切正常。谢谢你的帮助 好吧,所以我知道我需要做什么。问题在于我的主要时间线上的代码: tracebg.getMapWidth 我忘了代码只执行一次,在主时间线上没有事件侦听器,如下所示
stage.addEventListener(Event.ENTER_FRAME, n);
function n(e:Event):void
{
trace(bg.getMapWidth());
}
现在,每帧返回一次宽度,并且一切正常。谢谢你的帮助 如果在完全加载文件之前调用getMapWidth函数,为什么程序会失败?递归的getMapWidth没有处理好吗?哎呀,忘了编辑那行了。递归调用getMapWidth会导致堆栈溢出错误,因此这是不可能的。如果在文件完全加载之前调用getMapWidth函数,为什么程序会失败?递归的getMapWidth没有处理好吗?哎呀,忘了编辑那行了。递归调用getMapWidth会导致堆栈溢出错误,所以这是不可能的。