#events #actionscript #progress-bar
#Мероприятия #actionscript #индикатор выполнения
Вопрос:
я новичок в flash и actionscript.
страницу, о которой идет речь, можно увидеть здесь .
мой код AS:
import fl.video.*;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarMode;
import flash.events.ProgressEvent;
import fl.events.ComponentEvent;
// FLVplayback control
splashVid.visible = false;
progressBar.mode = ProgressBarMode.EVENT;
progressBar.indeterminate = false;
progressBar.source = splashVid;
progressBar.addEventListener(Event.COMPLETE, doSwitch);
progressBar.addEventListener(ProgressEvent.PROGRESS, progressHandler);
function progressHandler(event:ProgressEvent):void
{
iLabel.text = Math.round(event.bytesLoaded).toString();
}
function doSwitch(e:Event):void
{
iLabel.text = "loaded";
}
проблема в том, что обратный вызов progressHandler работает правильно (ProgressEvent.ПРОГРЕСС). обратный вызов doSwitch никогда не срабатывает (событие.ЗАВЕРШЕНО).
не могли бы вы любезно объяснить ошибку в моем подходе?
ЦЕЛЬ: я пытаюсь загрузить файл mp4 фиксированного размера, а затем использовать ПОЛНОЕ событие для визуализации элементов управления видеоклипом.
Спасибо.
РЕДАКТИРОВАТЬ: ПОЛНОЕ событие запускается сейчас после тестирования, но оно запускается после воспроизведения всего клипа. как мне выполнить запуск event.complete после загрузки, но не воспроизведения видеофайла? Спасибо.
РЕДАКТИРОВАТЬ: я мог бы провести сравнение между загруженными байтами и totalbytes в progressHandler… но проблема в том, что анимация прогресса никогда не завершается полностью, и я хотел бы отобразить полную панель прогресса перед переключением настроек отображения.
РЕДАКТИРОВАТЬ: панель прогресса завершает анимацию загрузки, если я не скрою ее после загрузки полного файла, чтобы решить мою проблему.
ОДНАКО: я все еще открыт для советов относительно того, есть ли лучший способ сделать это, используя какое-то ПОЛНОЕ событие, которое срабатывает после полной загрузки исходного файла mp4. Спасибо.
Ответ №1:
Предполагая, что вы используете FLVPlayer
Не уверен в ваших соглашениях об именах, но если я правильно прочитал код, splashVid — это имя экземпляра вашего FLVPlayer.
итак, что вам нужно сделать, это прослушать проигрыватель, а не индикатор выполнения.
Согласно ДОКУМЕНТАМ
splashVid.addEventListener(VideoEvent.READY, doSwitch);
Если это неверно, вам нужно удалить все свои правки и опубликовать 1 вопрос и более подробную информацию о вашем приложении.
Комментарии:
1. Видео-событие. READY сообщает о метаданных, таких как длительность, и срабатывает при начале загрузки, а не когда весь клип готов / загружен.