массив загрузчиков? - PullRequest
       22

массив загрузчиков?

1 голос
/ 21 февраля 2010

Как создать массив загрузчиков?

Большая картинка:

Я написал программу для картографирования на flex. Я хочу изменить свою картографическую программу так, чтобы все, что мне нужно было сделать, это вставить новый XML-файл вместо того, чтобы переходить к своему гибкому файлу и добавлять точное количество загрузчиков элементов, которое мне нужно. Поэтому я думаю, что я ищу массив загрузчиков, которые могут загружать файлы изображений, которые находятся в моем файле 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 ]

1 голос
/ 22 февраля 2010

Не прямой ответ на вопрос, так как он немного расплывчатый + @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();
}
1 голос
/ 21 февраля 2010

Да, это довольно плохой вопрос. Буквально (если беспечно):

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

Пытаясь прочитать то, что вы спросили, звучит так, будто вы пытаетесь загрузить целую кучу вещей и каким-то образом обрабатывать их все вместе ... и если вам придется спрашивать, вы будете бороться.

Вы можете попробовать использовать библиотеку Bulk Loader , что делает это для вас достаточно хорошо. Возможно, есть и другие.

...