Что такое ActionScript 3 contentloaderinfo? - PullRequest
1 голос
/ 17 августа 2011

Я создаю загрузчик ActionScript 3, который отображает ход выполнения Flash загрузки внешнего скрипта. Вот фрагмент моего кода, который отлично работает, но я немного запутался, почему он мне нужен:

this.SWFLoader = new Loader();
this.SWFLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, trackProgress);
this.SWFLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
this.SWFLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);

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

Что касается приведенного выше фрагмента, вот в чем я не уверен:

  1. Что такое contentloaderinfo объект?
  2. Какие свойства содержит объект contentloaderinfo?
  3. Почему я не могу просто использовать this.SWFLoader.addEventListener()?
  4. Когда целесообразно использовать contentloaderinfo?

Это тема, которая меня сильно смутила, и я никогда не получал хорошего объяснения этому. Извините за аварийный список вопросов. Я буду вознаграждать любые и все хорошие ответы.

Спасибо за ваше время.

1 Ответ

5 голосов
/ 17 августа 2011

Вы создаете класс Loader для загрузки, а contentLoaderInfo является объектом в этом классе, который отслеживает некоторую базовую информацию о том, что загружается. Некоторые из его свойств bytesLoaded, bytesTotal, url, loaderURL и applicationDomain. На данный момент наиболее часто используются bytesLoaded и bytesTotal, которые дают вам удобный процент загруженного содержимого. Они обновляются каждый раз, когда вызывается ProgressEvent.PROGRESS, что оставляет лишь несколько графических элементов вне предзагрузчика.

У объекта contentLoaderInfo также есть другие удобные события, на которые вы можете подписаться (как в своем примере), чтобы знать, когда начинается процесс загрузки, обновляется, заканчивается и / или даже происходит сбой.

Вы можете посетить документацию AS3 для получения более подробной информации: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#contentLoaderInfo

Достаточно запутанно, contentLoaderInfo является LoaderInfo объектом, поэтому вы можете увидеть его свойства и методы здесь: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html

Вы не можете использовать this.SWFLoader.addEventListener(), потому что SWFLoader не запускает это событие. Вместо этого его гораздо более дружественный к загрузке дочерний элемент (contentLoaderInfo) делает это - следовательно, код работает так, как он делает.

Целесообразно использовать contentLoaderInfo, когда вам нужно использовать методы или свойства, которые он делает доступными для вас. Это может звучать как хитрый ответ, но это правда. Как правило, вы пишете функции для обновления элементов сцены, которые позволяют пользователю понять, что происходит в отделе загрузки - точно так же, как вы сейчас.

...