Прямолинейное равномерное и равноускоренное движение. Основы механики Flash
Автор (С): Александр Рыбников
Мы надеемся, что прочитав предыдущие статьи, относящиеся к Flash-технологии, вы уже научились создавать простейшие видеоролики и писать несложные скрипты, позволяющие управлять различными объектами вашей сцены. Но, возможно, в поисках нужного сценария вы столкнулись с проблемой создания модели механического движения, о котором так подробно было рассказано ещё в шестом классе средней школы.
Итак, сегодня мы расскажем о том, как с помощью Flash-технологии смоделировать равномерное и равноускоренное движение. Начнём с более простого варианта. С необходимостью создания модели равномерного движения объекта можно столкнуться, например, в том случае если вы захотите показать движение автомобиля. Казалось бы, что может быть проще – задать в первом кадре сцены начальную координату автомобиля, а в последнем - конечную, создать анимацию, отрегулировать скорость движения, увеличивая или уменьшая количество кадров сцены, и всё … Ролик, вроде как, готов. Но у такого подхода есть существенный недостаток. Вы действительно можете задать любую скорость перемещения объекта, но никак не сможете её менять в процессе работы ролика, например, при нажатии на кнопку.
Для того, чтобы управлять движением объекта в процессе работы
видеоролика, необходимо написать скрипт, управляющий таким движением. Рассмотрим
такой скрипт на примере движущегося по прямой автомобиля с постоянной скоростью.
Вначале нарисуем простейший фон, имитирующий дорогу, затем создадим новый символ
типа Movie Clip и поместим в него автомобиль. В окне Instance присвоим ему какое-нибудь
имя, например avto. Теперь для того, чтобы изменить координаты автомобиля, необходимо
переменной avto._x присвоить соответствующее значение. Наш видеоролик будет
состоять всего из трёх кадров. Первый кадр осуществляет инициализацию переменных:
i = 90;
j = 0;
avto._x=90
В данном случае 90 – это начальная координата автомобиля.
Второй кадр осуществляет перемещение в заданную координату:
i = i+2;
avto._x = i;
if(avto._x > 900){ gotoAndPlay (1);}
Если эта координата превышает значение 900, т.е. автомобиль уехал за пределы экрана, то видеоролик возвращается в исходное состояние.
В данном случае наш автомобиль будет перемещаться на два пикселя вправо за один кадр.
Изменив это число, мы можем изменить скорость его перемещения.
Третий кадр осуществляет зацикливание движения:
gotoAndPlay (2);
Таким образом, если вы посмотрите работающий вариант, то увидите, что автомобиль равномерно пересекает экран компьютера.
Теперь усложним задачу. Сделаем так, чтобы автомобиль трогался с места в левой стороны экрана, разгонялся и на максимальной скорости покидал пределы окна.
Для подобной модернизации требуется совсем чуть-чуть - изменить
всего один кадр – второй:
j = j+0.05;
i = i+j;
avto._x = i;
if(avto._x > 900){ gotoAndPlay (1);}
Мы ввели ещё одну переменную j. Она и осуществляет ускорение движения объекта.
Работающий вариант можно увидеть здесь.
Вы видите, что задавать движение объектов сцены, используя программные элементы, не только достаточно просто и быстро, но и более универсально, нежели чем просто создавать анимацию из начальной точки в конечную. С помощью свойств _x, _y, _rotation, _alpha и других можно без труда изменять различные параметры объекта, при этом количество кадров будет оставаться минимальным.