1

如何创建一组加载器?

大图:

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

4

2 回答 2

1

是的,这是一个非常糟糕的问题。从字面上看(如果开玩笑的话):

var loaders:Array = [new Loader(), new Loader()];

试图阅读你所问的内容,听起来你正试图加载一大堆东西并以某种方式将它们全部加载在一起......如果你不得不问,你会很挣扎。

不过,您可以尝试使用Bulk Loader库,它可以很好地为您做到这一点。可能还有其他人。

于 2010-02-21T20:39:28.750 回答
1

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

然而,由于前段时间我注意到一个类似的问题,我只想指出一次实例化所有加载器感觉有点不对劲。

只存储url并处理它们不是有点合适吗?

基本示例:( 注意我在没有测试的情况下输入了它......)

// 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();
}
于 2010-02-21T21:27:31.117 回答