【发布时间】:2012-06-08 03:15:52
【问题描述】:
所以我一直在尝试在 AS3 中执行以下操作来加载任何图像并在运行时检索其位图数据:
var bitmapData:BitmapData;
var loader:Loader;
var completed:Boolean = false;
public function loadBitData(path:String):BitmapData{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(path));
while(!completed){
}
completed = false;
return bitmapData;
}
private function onComplete (event:Event):void{
bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
completed = true;
}
由于加载器不会在单独的线程上加载文件,因此这段代码显然会陷入无限循环。如果删除 while 循环,该方法将返回 null,因为当它到达该语句时,数据尚未加载。但是,它仍然会在之后加载数据。 (我已经使用进度事件检查了这一点并打印了到目前为止已加载的数据量)
我只希望该方法加载文件,然后在完全加载后返回 BitmapData。在这种情况发生之前,程序应该等待并且不再执行任何代码。对此的任何帮助将不胜感激。
【问题讨论】:
-
你不能把一个异步函数变成一个同步函数。在完成事件中加载数据后,拥有要运行的代码。
标签: actionscript-3 load bitmapdata