Как мне дождаться загрузки внешнего файла .txt в ActionScript 3? - PullRequest
1 голос
/ 02 мая 2009

Как мне дождаться загрузки внешнего файла .txt в ActionScript 3? Если я использую URLLoader, я не гарантирую, что файл загрузился, так как он отправляет событие, когда оно завершено. Я вызываю функцию загрузчика из другого класса, поэтому я не могу просто вставить следующие действия в прослушиватель событий.

1 Ответ

2 голосов
/ 02 мая 2009

Для загрузки текстового файла (или файла XML) вы можете использовать URLLoader. Вот пример для XML (почти такой же) из kirupa

var loader:URLLoader;
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlLoaded);

var request:URLRequest = new URLRequest("file.xml");
loader.load(request);
function xmlLoaded(event:Event):void {
    var myXML:XML = new XML(loader.data);
}

Если вы вызываете его из другого класса, вы можете передать вызывающую функцию как ссылку на EventListener и обработать Event.COMPLETE из вызываемого класса:

loader.addEventListener(Event.COMPLETE, caller_class.xmlLoaded);

В идеале, вы могли бы сделать ваш класс загрузчика многоразовым и заставить его расширять EventDispatcher, чтобы вместо прослушивания URLLoader вы слушали свой собственный класс. Я не публикую код для этого, чтобы сделать ответ простым, но вот пара ссылок, если вам интересно: Пример для загрузчика XML и Еще один пример для более сложного загрузчика изображений ( во избежание путаницы не читайте его, если вы уже не понимаете текст / XML)

Надеюсь, это поможет:)


РЕДАКТИРОВАНИЕ: Как видно, вы ищете способ отправки события вот несколько советов:

1) расширить класс до EventDispatcher

public class YourClass extends EventDispatcher{

2) используйте dispatchEvent(new Event("event_name")); для отправки события

3) Прослушайте это событие из другого класса. Например: loader_class.addEventListener("event_name", callback);

* 4) При желании вы можете изменить строку («имя-события») на такую ​​константу, как DispatcherClass.EVENT_NAME, определив константу в классе диспетчера public const EVENT_NAME:String = "event_name", и вызвать ее из другого класса следующим образом: loader_class.addEventListener(DispatcherClass.EVENT_NAME, callback);

Надеюсь, теперь все стало понятнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...