2010-08-17 1 views
0

У меня есть большой SWF-файл, загружаемый родительским SWF, и я хотел бы начать воспроизведение загружаемого фильма, допустим, когда он будет заполнен на 50%. Согласно моей ожидаемой полосе пропускания пользователя и размеру моего фильма, я рассчитываю лучший момент для этого (пленка может быть загружена на 20%, 30% или 50%). Я хочу оставить пользователей в ожидании минимума, и мне не нужно ждать, пока моя вспышка будет на 100%.Flash - как начать воспроизведение загружаемой SWF-пленки до ее завершения?

Хорошо, это сказало, вот в чем проблема. Я нахожусь в ActionScript 3. У меня есть один фильм, загружающий другой, и я хочу предвидеть загрузку загруженного фильма. У меня есть функция onProgressHandler (mProgress: ProgressEvent) (с прослушивателем, запущенным ProgressEvent.PROGRESS), и у меня есть регулярная функция onLoadComplete (e: Event) (со слушателем, запущенным Event.COMPLETE). Я мог проверить на 20%, завершенный во время моего обычного onProgressHandler. Но затем, когда я определил, что этот момент был достигнут, как я могу предвидеть запуск фильма? Я имею в виду, что обработчик Event.COMPLETE передает e: Event, и я могу использовать e.target для загрузки загруженного объекта в свой фильм. Но что произойдет, если я хочу начать этот процесс до его завершения? Я не могу передать это e: Событие, потому что обработчик COMPLETE еще не запущен ...

Одна важная вещь, чтобы сказать. Пленка, которая загружается, почти пуста. Это очень легкий. Тяжелая пленка загружается, и я хочу, чтобы этот фильм загружался в клип в моем фильме до того, как он завершил загрузку. Это возможно?

Надеюсь, я убедился. Если я этого не сделаю, я попытаюсь объяснить дальше.

Любая помощь будет очень оценена. Огромное спасибо.

ответ

0

progressEvent имеет свойство bytesLoaded, которое вы можете использовать, чтобы решить, когда начать свой фильм. Зная общие байты и загруженные байты, все, что вам нужно сделать, это установить временной интервал, чтобы определить фактическую скорость загрузки пользователя. Как только вы получите всю эту информацию, вы сможете определить, загрузил ли пользователь достаточно, чтобы начать фильм.

Проверьте сайт саман больше на ProgressEvent: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/events/ProgressEvent.html

escapetheory.com.au

+0

Хорошо, я понимаю, и я делаю более или менее. Я сомневаюсь: как я могу ссылаться на тот же материал, который был бы с Event.COMPLETE, прежде чем достигнуть его? Мне нужно e: Событие, которое содержит загруженный фильм, чтобы сделать что-то вроде следующего: var loaderInfo: LoaderInfo = e.target как LoaderInfo; var loaded_swf = e.target.content; loaded_swf.x = 50; loaded_swf.y = 50; mc_control.addChild (loaded_swf); –

+1

@Marcos Buarque. Loader - это DisplayObject. У вас уже есть ссылка на него; если вы не храните загрузчик как временную шкалу или переменную класса, чтобы получить доступ к ней из обработчика событий. Таким образом, вы можете добавитьChild вместо содержимого. Вы также можете изменить его 'x,' y', 'width' и т. Д. Для большинства целей это то же самое, что и изменение самого содержимого, за исключением того, что вам не нужно ждать, пока он будет загружен. –

+0

ваша функция анализирует аргумент типа события (для всего события), но на самом деле вы можете принять любое событие. Я думаю, что ProgressEvent распространяется от Event, поэтому ваша функция может быть такой: onProgressEvent (event: Event): void { if (enoughLoaded) { onComplete (event); } } – Garrt

Смежные вопросы