Monday, July 26, 2010

Временная диаграмма (TimeLine)

Flash-player воспроизводит SWF по кадрам. Это происходит когда flash-player встречает tagShowFrame, т.е. ни какие изменения в отображении нельзя увидеть пока не будет этого тэга. Частота отображения задается в заголовке файла величиной FPS. Умножив количество кадров на значение FPS можно вычислить длительность проигрывания swf.
Это в теории, но на практике все намного сложнее и вот почему.
Дело в том, что SWF может быть не простым фильмом, а сложным логическим сценарием с элементами интерактивности. Переход от кадра к кадру может происходить в произвольной последовательности, в том числе с остановкой на кадрах с целью ожидания реакции пользователя. Фактически, такие SWF являются вэб-приложениями.
Кроме того, в movie можно использовать специальные объекты Спрайты (Sprite), в терминологии Flash IDE их называют MovieClip. Спрайты имеют такую же структуру как SWF (набор тэгов) и свою временную диаграмму. Так вот, встречаются SWF с одним кадром в SWF, где вся анимация происходит в спрайтах.
И на последок. Иногда flash-плеер не успевает подготовить кадр для отображения. Как правило, это происходит когда в кадре выполнятся трансформация изображений или присутствуют многочисленные наложения масок друг на друга. В этих случаях обновления происходят заметно реже, чем указано в FPS.
Вывод. В большинстве случаев НЕЛЬЗЯ определить длительность SWF. В большинстве случаев НЕЛЬЗЯ перемотать SWF, например на 3-ий кадр, если вы не знаете структуру и сценарий movie. В большинстве случаев НЕЛЬЗЯ узнать, закончился ли проигрыватся SWF, поскольку "дейстивие" может происходить не в основной временной диаграмме, а в спрайтах.

No comments:

Post a Comment