Показать сообщение отдельно
Старый 21.01.2011, 17:21
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 1  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
По умолчанию ProgressEvent.PROGRESS не приходит в подгружаемой swf.

Гружу в свою флешку чужую. В ней *****код который вешает на loaderInfo обработчик ProgressEvent.PROGRESS и если bytesLoaded==bytesTotal прекращает отрисовку загрузчика и запускает основное содержимое. Ни init ни complete не обрабатываются. При запуске отдельно или на веб странице PROGRESS при ходит как минимум дважды(выяснено опытным путём) один в начале загрузки с bytesLoaded==0 и второй с bytesLoaded==bytesTotal. А если я подгружаю эту то ни один прогресс не приходит.

Для прояснения написал 2 простейших примера: as3Loader и as3EventCollector Коллектор собирает всякие интересные ивенты и трейсит их, лоадер подгружает коллектор и тоже трейсит свои ивенты. Вот они:
При загрузке отдельно:
Код:
!ToLoad cinit
!ToLoad iinit
!ToLoad  [Event type="added" bubbles=true cancelable=false eventPhase=2] Target = [object Main] CurrentTarget [object Main]
!ToLoad  [Event type="addedToStage" bubbles=false cancelable=false eventPhase=2] Target = [object Main] CurrentTarget [object Main]
!ToLoad  [Event type="init" bubbles=false cancelable=false eventPhase=2] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
!ToLoad  [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=1161 bytesTotal=1161] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
!ToLoad  [Event type="complete" bubbles=false cancelable=false eventPhase=2] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
!ToLoad  [Event type="activate" bubbles=false cancelable=false eventPhase=2] Target = [object Main] CurrentTarget [object Main]
При загрузке через лоадер:
Код:
Loader  [Event type="added" bubbles=true cancelable=false eventPhase=2] Target = [object Loader] CurrentTarget [object Loader]
Loader  [Event type="addedToStage" bubbles=false cancelable=false eventPhase=2] Target = [object Loader] CurrentTarget [object Loader]
Loader  [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=0 bytesTotal=1164] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
Loader  [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=1164 bytesTotal=1164] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
!ToLoad cinit
!ToLoad iinit
!ToLoad  [Event type="added" bubbles=true cancelable=false eventPhase=2] Target = [object Main] CurrentTarget [object Main]
!ToLoad  [Event type="added" bubbles=true cancelable=false eventPhase=2] Target = [object Main] CurrentTarget [object Main]
Loader  [Event type="added" bubbles=true cancelable=false eventPhase=3] Target = [object Main] CurrentTarget [object Loader]
!ToLoad  [Event type="addedToStage" bubbles=false cancelable=false eventPhase=2] Target = [object Main] CurrentTarget [object Main]
Loader  [Event type="init" bubbles=false cancelable=false eventPhase=2] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
!ToLoad  [Event type="init" bubbles=false cancelable=false eventPhase=2] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
Loader  [Event type="complete" bubbles=false cancelable=false eventPhase=2] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
!ToLoad  [Event type="complete" bubbles=false cancelable=false eventPhase=2] Target = [object LoaderInfo] CurrentTarget [object LoaderInfo]
В результате мы видим что PROGRESS прошёл раньше чем произошла инициализация класса DocumentClass. В результате чего зарегистрировать прогресс внутри не представляется возможным. Всякие разные ухищрения испробовал, не помогает. Диспатчить ивенты в LoaderInfo запрещено. Подменить его тоже не получилось. Есть идеи как такое сделать? Дело осложняется тем что я гружу другую флешку скачала как байтаррай а потом уже лоадером загружаю через loadBytes(). Единственная мысль которая пришла в момент написания поста это модифицировать загружаемую флешку примерно так. Чтобы загрузка продолжилась после init. Сейчас буду это дело ковырять.

Добавлено через 22 минуты
Сделал тестовый прелоадер с экспортом всего остального во второй кадр, не помогло, даже он грузится так что прогресс приходит раньше инита. Даже затолкал в третий кадр трёхметровый jpg, всё равно сначала всё загрузил потом запустил(что с локалки что с сервера).


Последний раз редактировалось Aquahawk; 21.01.2011 в 18:20.