Прямолинейное равномерное и равноускоренное движение. Основы механики 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 и других можно без труда изменять различные параметры объекта, при этом количество кадров будет оставаться минимальным.

Hosted by uCoz