一系列装载机?

时间:2010-02-21 20:28:42

标签: flex actionscript-3 arrays loader

如何创建一个加载器数组?

更大的图景:

我已经在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个位置。

2 个答案:

答案 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();
}