суббота, ноября 17, 2007

Об особенностях мониторинга загрузки, об экспорте для AS и об импорте классов. AS2

Важно знать:
  1. Если клип экспортируется для ActionScript посредством Linkage > Export for ActionScript, при отмеченном параметре Export in first frame, этот клип будет доступен для "attachMovie" с первого же фрейма, но будет помехой для правильного мониторинга загрузки SWF-файла, т.к. первый фрейм не будет выведен до тех пор, пока все его клипы не загрузятся. При этом, загрузка некоторого (довольно приличного) объема данных не будет отображена, что не есть хорошо.
    Для того, чтобы отложить загрузку такого клипа, необходимо снять параметр Export in first frame. Однако если явным образом такой клип не присутствует во временной шкале, он не будет экспортирован в SWF вообще. Поэтому, для экспорта таких клипов нужно отвести какой-нибудь фрейм, который никогда не будет показан при воспроизведении SWF.
  2. Классы из Publish settings > Flash > Settings > Classpath и классы из текущего каталога импортируются во фрейм, указанный там же, в Export frame for classes. Для идеального мониторинга загрузки, лучше указать не 1-й фрейм, а какой-либо другой, располагающийся после модуля мониторинга загрузки .
    Странно, но классы, импортируемые "вручную" также не могут быть использованы до этого фрейма.
  3. Если с клипом ассоциирован класс по средством параметра Linkage > Export for ActionScript, и для клипа и для класса всё происходит как в 1-м и 2-м пунктах.

Особенности мониторинга загрузки (preloader):

  1. Модуль мониторинга загрузки должен располагаться до фрейма, в который импортируются классы и экспортируются клипы.
  2. Мониторинг не может быть описан классом.
  3. Модуль мониторинга загрузки должен иметь минимальный объем.
  4. При подсчете процента загрузки SWF, необходимо учитывать объем уже загруженных на момент активации мониторинга данных:

    На момент инициализации мониторинга:
    this.skipped=_root.getBytesLoaded();
    this.total=_root.getBytesTotal()-this.skipped;

    В процессе подсчета загруженного объема:
    var progress:Number=(_root.getBytesLoaded()-skipped)*100)/this.total;

Код подключаемого кода здесь.

Комментариев нет: