Apache flex 装载机阵列?

Apache flex 装载机阵列?,apache-flex,actionscript-3,arrays,loader,Apache Flex,Actionscript 3,Arrays,Loader,如何创建加载程序数组 大局: 我已经用flex编写了一个映射程序。我想更改我的映射程序,这样我所需要做的就是插入一个新的xml文件,而不是进入我的flex文件并添加我需要的确切数量的项目加载器。所以我想我正在寻找一个加载程序数组,可以加载XML文件中的图像文件 xml文件示例: <locations> <location> <name>Big Star</name> <street>123 S

如何创建加载程序数组

大局:

我已经用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>

大明星
123某街。
城市
XX
555555
12.34567
-67.54321
bigStar_icon.gif
bigStar_img.swf
不
对
杂货店

这个xml有时可能有2000个位置。

是的,这是一个非常糟糕的问题。字面意思(如果开玩笑):

试着读懂你的要求,听起来好像你在尝试加载一大堆东西,并以某种方式处理它们。。。如果你不得不问,你会挣扎的


不过,您可以尝试使用该库,这对您来说相当好。可能还有其他问题。

这个问题没有直接的答案,因为它有点模糊+@alecmce已经给出了答案(在这种情况下,我也会选择像BulkLoader这样的装载机队列)

然而,由于我不久前注意到一个类似的问题,我只想指出,一次性实例化所有加载程序感觉有点错误

仅仅存储URL并逐个处理它们不是有点合适吗

基本示例: (当心,我没有测试就输入了…)


如何创建数组?我试图创建从xml中指定的文件名加载swf的加载程序,所以我不知道如何创建所有这些加载程序。有更好的方法吗?西奥,这是一个有趣的方法,但我要提醒你不要这样做。如果您使用Loader加载某个内容,然后将其内容删除到另一个显示对象中,那么您将很难再次将其从内存中删除。您还失去了将Loader添加到后台并在资源准备就绪时显示资源的好处,这意味着您在代码中添加了竞争条件。让我们假设你装载了一堆行星,并且想要定位和调整它们的大小,但是定位和缩放逻辑不会等待装载周期完成。。。如果所有行星都存储在装载机中,那么即使在内容装载之前,您也可以定位装载机并对其进行定位和缩放。这不是一个错误的方法,只是需要考虑一下!好吧,现在我有一个单一的函数,可以创建所有加载程序并加载它们,而无需等待一个完整的命令。@alecmce-是的,我同意。我总是使用加载管理器,所以我不必太担心内存管理。尽管如此,我还是倾向于从不初始化对象,除非我直接需要它们(惰性初始化)作为经验法则。如果有显示容器要“填充”以加载对象,我使用getter提供“资产代理”来由加载管理器处理。然而,这是特定于框架的方法,在这个例子中,我只是想给一个不同方法的提示。。。我想最后还是有点私人的:)谢谢你指出这一点,T。
var loaders:Array = [new Loader(), new Loader()];
// 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();
}