AS3加载程序() - 使用一个加载程序加载多个图像
问题描述:
我正在尝试在AS3中加载多个图像,并且正在探索有关如何完成这些操作的不同选项。AS3加载程序() - 使用一个加载程序加载多个图像
我想有只使用一个负载()实例,并在处理的onComplete处理各种图像分配...
这是我第一次尝试:
var buttonLdr:Loader = new Loader();
buttonLdr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
buttonLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
whichButton = 0;
buttonLdr.load(new URLRequest("images/test.png"));
whichButton = 1;
buttonLdr.load(new URLRequest("images/testDown.png"));
whichButton = 2;
buttonLdr.load(new URLRequest("images/testHover.png"));
private function onLoadComplete(e:Event):void
{
switch(whichButton)
{
case 0:
buttonBgUp = e.target.loader.content;
break;
case 1:
buttonBgDown = e.target.loader.content;
break;
case 2:
buttonBgHover = e.target.loader.content;
break;
}
create();
}
一个非常简单的方法......虽然它只调用最后一次调用的函数,但设置buttonBgHover,但没有别的。
任何指导可能会发生在这里将不胜感激。
-thanks
答
只有在上次加载完成时才需要调用下一个加载。
whichButton = 0;
buttonLdr.load(new URLRequest("images/test.png"));
private function onLoadComplete(e:Event):void
{
switch(whichButton)
{
case 0:
buttonBgUp = e.target.loader.content;
whichButton = 1;
buttonLdr.load(new URLRequest("images/testDown.png"));
break;
case 1:
buttonBgDown = e.target.loader.content;
whichButton = 2;
buttonLdr.load(new URLRequest("images/testHover.png"));
break;
case 2:
buttonBgHover = e.target.loader.content;
break;
}
create();
}
嗯,这将完成这项工作,但那种层叠的逻辑是很不理想的维护代码的条款,或作为一个负载管理器,可以成长的基础并获得功能。因为这是一个学习网站,所以我会建议开放“whichButton”以支持将文件URL推入队列(数组)并使用Array.shift(),直到队列为空。这样,您可以支持在加载过程中添加文件,添加更多循环加载程序等。坚实的设计。 – 2011-04-26 17:22:02