如何创建一个加载器数组?
更大的图景:
我已经在flex中编写了一个映射程序。我想更改我的映射程序,以便我需要做的就是放入一个新的xml文件,而不是进入我的flex文件并添加我需要的项目加载器的确切数量。所以我想我正在寻找可以加载我的XML文件中的图像文件的加载器数组。
xml文件示例:
<locations>
<location>
<name>Big Star</name>
<street>123 Some St.</street>
<city>City</city>
<state>XX</state>
<zip>555555</zip>
<lat>12.34567</lat>
<long>-67.54321</long>
<iconFile>bigStar_icon.gif</iconFile>
<imageFile>bigStar_img.swf</imageFile>
<motion>no</motion>
<featured>yes</featured>
<category>Grocery</category>
</location>
</locations>
这个xml有时可以有2000个位置。
答案 0 :(得分:1)
是的,这是一个非常糟糕的问题。从字面上看(如果是讽刺的):
var loaders:Array = [new Loader(), new Loader()];
试着读到你问的内容,听起来你正试图加载一大堆东西并处理它们以某种方式装在一起......如果你不得不问,那你就会挣扎。 / p>
你可以尝试使用Bulk Loader库,这对你来说非常合适。可能还有其他人。
答案 1 :(得分:1)
不是问题的直接答案,因为它有点模糊+ @alecmce已经给出了答案(在这种情况下我会选择一个加载程序队列,例如BulkLoader)。
然而,由于前段时间我注意到一个类似的问题,我只是想指出,立即实例化所有的加载器只是感觉有点不对。
仅存储网址并逐个处理它们是不是有点合适?
基本示例: (注意我没有测试就输入了它...)
// So here's the point: only Strings are stored ...
var urls:Array = new Array('image1.jpg','image2.jpg',image3.jpg);
loadNext();
function loadNext()
{
if(urls.length() == 0)
return;
load(urls.shift())
}
function load(url:String):void
{
// The loader is created lazily just before before we need it
var loader:Loader = new Loader(new URLRequest(url));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded)
loader.load(url);
}
function onLoaded(e:Event):void
{
event.target.removeEventListener(Event.COMPLETE, onLoaded);
addChild(event.target.content); // ... or whatever has to happen here.
loadNext();
}