Этот код в настоящее время работает?Похоже, вы слишком много вкладываете в одну функцию - запускаете сразу несколько загрузчиков и используете вложенные функции для обработки результатов.Я не пробовал, но это выглядит немного смущенным.(Я стараюсь держаться подальше от вложенных функций, кстати).
Я бы разбил все это на отдельную цепочку функций.Вам нужна последовательность, которая после загрузки xml:
- инициирует загрузку изображения
- отвечает на событие загрузки
- , затем захватывает изображение как загруженные данные,
- добавляет изображение в список отображения, удаляя ранее загруженное изображение
- и, наконец, запускает таймер, а при его запуске снова запускает последовательность.
Вам понадобится еще одна функция парсера / контроллера xml, которая обслуживает очередь изображений - она просто проверяет текущее число изображений, увеличивает его и снова запускает последовательность загрузки.
Возможно, вы захотите добавить паруЕще несколько шагов для запуска загрузки графического счетчика во время загрузки, или что-то еще, или каким-то образом связаны с обменом между одной графикой / видео на другую.
Надеюсь, вы поняли as3 и можете понять это отсюда.Дайте мне знать, если у вас есть какие-либо зависания.У меня есть встроенные классы, которые делают именно это, и я могу поделиться, если вам это нужно.
Приветствия
- обновление -
На данный момент, он «работает», как в сценарии, пауза на 5 секунд (с пустым холстом), затем отображает все изображения сразу, а не последовательно
Это потому, что выинициирование всех ваших загрузчиков в одном цикле foreach вместо активации отдельных последовательностей с течением времени.Определенно не то, что вам нужно.
- обработка очереди -
Итак, у вас есть объект xml, который представляет собой просто повторяющуюся структуру данных.Важно отметить, что он имеет свойство длины и может перемещаться как индекс.Чтобы обойти это в цепочечной последовательности, вам, вероятно, понадобится независимая переменная-счетчик, которую вы можете увеличивать / уменьшать.
private var _count:uint = 0;
private function controlQueue(){
var target: String = xmlContent[_count].@url; //or however you are obtaining this
initiateLoad(target);
_count++: //increment counter
if(_count > xmlContent.length){ _count = 0}; //if counter exceeds length, swing back around
}
private function initiateLoad(target:String){ ...
Если вы разрешаете пользовательский контроль, вы можете передать controlQueue аргумент "direction", который может диктовать _count ++ или _count -;
Довольно просто, но удобно.
Надеюсь, что помогает-