我在游戏开始前加载游戏的图像。因此,main函数将图像链接发送到图像加载对象。当我在main中执行image.load(link)时,这就是我的图像加载对象中发生的事情:
public function charge(str:String, img_x:int, img_y:int, layer:Sprite):void
{
trace("load");
urlRequest = new URLRequest(str);
loaderArray[cptDemande] = new Loader();
loaderArray[cptDemande].contentLoaderInfo.addEventListener(Event.COMPLETE, loading_done);
loaderArray[cptDemande].load(urlRequest);
posX[cptDemande] = img_x;
posY[cptDemande] = img_y;
layerArray[cptDemande] = layer;
cptDemande++;
}
参数img_x:int,img_y:int和layer:Sprite与之后显示图像有关。我正在使用数组,以便在加载完成后将图像添加到舞台上。
事件监听器触发此函数:
public function loading_done(evt:Event):void
{
cptLoaded++;
evt.currentTarget.contentLoaderInfo.removeEventListener(Event.COMPLETE, loading_done);
if((cptDemande == cptLoaded) && (isDone == true))
{
afficher();
}
}
我想要的是能够定位好的加载器来删除事件监听器。我目前使用的内容(evt.currentTarget)不起作用并生成错误代码:
1069在flash.display.LoaderInfo上找不到属性数据且没有默认值
答案 0 :(得分:1)
跟踪evt.currentTarget
表明currentTarget
是LoaderInfo
属性。尝试更新您的代码,如下所示:
public function loading_done(evt:Event):void
{
cptLoaded++;
// Current target IS the contentLoaderInfo
evt.currentTarget.removeEventListener(Event.COMPLETE, loading_done);
//evt.currentTarget.contentLoaderInfo.removeEventListener(Event.COMPLETE, loading_done);
if((cptDemande == cptLoaded) && (isDone == true))
{
afficher();
}
}
对我来说,只要一个小小的提示,你可以通过将所有图像属性存储在Object
然后将它们推到一个{{1}上来让自己的生活更轻松。而不是为每个属性管理一个单独的数组。
这样的事情:
Array