Ожидание загрузки SWF-файла SWFLoader

В настоящее время я работаю над приложением (Flex), которое интенсивно использует внешние SWF. Я хотел бы создать статический метод, который принимает имя файла в качестве аргумента и возвращает SWF, заключенный в какой-то другой класс.

public static function getSWFWrapperFromFile(path:string):SWFWrapper {
   var loader:SWFLoader = new SWFLoader();
   loader.addListener(Event.COMPLETE, onLoad);
   loader.load(path);
   // If I create new SWFWrapper object here and try to assign it the loader.content  I get null reference

  }

Однако при таком подходе я не могу инкапсулировать логику в одну функцию из-за неблокирующей загрузки () и необходимости обработчика onLoad. Есть ли возможность вызвать задержку после вызова метода load? Или у майбера есть другой, лучший способ?

Спасибо Алонзо

4 ответа

Список отображения хорошо спроектирован для асинхронной загрузки. Вы заметите, что Loader является производным от DisplayObject классом и, следовательно, может быть помещен непосредственно в список отображения. Когда его содержимое загружено, оно будет дочерним для Загрузчика. Таким образом, если SWFWrapper является производным от DisplayObject, вы можете просто сделать следующее в конце своего кода:


var wrapper:SWFWrapper = new SWFWrapper();
wrapper.addChild(loader);
return wrapper;

Во флэш-памяти вы не можете заблокировать метод - вам всегда нужно использовать обработчик onLoad для загрузки данных. (Модель выполнения as3 является однопоточной, если вы заблокируете метод, остальная часть программы не будет выполнена)

Вам нужно подождать, пока ваш Loader Объект завершен. Попробуйте добавить в обработчик событий. Да, все становится мутным после того момента, когда у вас есть несколько загрузчиков, и вам нужно ждать, пока последний не завершит работу. Но это так, если вы собираетесь использовать SWFLoader.

Как говорили другие, ты не можешь этого сделать. Однако обратите внимание на библиотеку BulkLoader AS3, которая берет на себя бремя одновременного управления несколькими загрузчиками и ожидания их завершения. Это хорошо задокументировано, и для его использования требуется всего несколько строк.

Другие вопросы по тегам