2010-03-11 98 views
1

我正在尝试在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

回答

1

只有在上次加载完成时才需要调用下一个加载。

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(); 

}

+1

嗯,这将完成这项工作,但那种层叠的逻辑是很不理想的维护代码的条款,或作为一个负载管理器,可以成长的基础并获得功能。因为这是一个学习网站,所以我会建议开放“whichButton”以支持将文件URL推入队列(数组)并使用Array.shift(),直到队列为空。这样,您可以支持在加载过程中添加文件,添加更多循环加载程序等。坚实的设计。 – 2011-04-26 17:22:02