Руководство по actionscript. часть 4, стр. 137
Например, при программировании перемещения объекта t в предыдущем разделе мы неявно задавали его скорость относительно скорости кадров. Наш код говорит: «При прохождении каждого кадра перемещаем объект t на 10 пикселов вправо»:
ball_mc._x += 10:
Следовательно, скорость объекта t зависит от скорости кадров. Если скорость кадров равна 12 кадрам в секунду, то скорость перемещения объекта t составит 120 пикселов в секунду. Если скорость кадров равна 30 кадрам в секунду, скорость перемещения объекта t составит 300 пикселов в секунду!
При создании анимаций на базе сценариев вы можете поддаться искушению рассчитать расстояние перемещения элемента с учетом назначенной скорости кадров. Например, если назначенная скорость кадров составляет 20 кадров в секунду и мы хотим, чтобы элемент перемещался со скоростью 100 пикселов в секунду, естественно предположить, что скорость объекта должна составлять 5 пикселов за один кадр (5 пикселов х 20 кадров в секунду = 100 пикселов в секунду).
Однако у этого подхода есть два существенных недостатка.
? Всякий раз, изменяя назначенную скорость кадров, мы должны модифицировать весь код, который вычисляет скорость с учетом данной скорости кадров.
? Как было сказано в гл. 23, среда выполнения Flash не всегда достигает назначенной скорости кадров. Если компьютер слишком медленный, чтобы отображать кадры со скоростью, соответствующей назначенной, анимация будет замедляться. Это замедление может варьироваться даже в зависимости от загрузки системы; если запущены другие программы или если среда Flash выполняет некую задачу с интенсивной загрузкой процессора, то скорость кадров может упасть на короткий промежуток времени, после чего будет восстановлен нормальный темп.
В некоторых случаях анимация, воспроизводимая со слегка различающимися скоростями, может считаться допустимой. Но когда визуальная точность имеет не последнее значение или когда мы создаем, скажем, игру с активными действиями, гораздо более подходящим вариантом является определение расстояния для перемещения объекта с учетом прошедшего времени, а не в зависимости от назначенной скорости кадров. Дополнительную информацию можно найти далее, в разд. «Анимация, основанная на скорости».
Создание анимации с использованием события TimerEventJIMER
В предыдущем разделе рассказывалось о том, каким образом использовать событие Event. ENTER FRAME для создания анимаций, которые синхронизируются со скоростью кадров среды выполнения Flash. В этом разделе мы познакомимся с тем, как синхронизировать анимации с произвольным промежутком времени, задаваемым с помощью класса flash. utils. Timer.