ДВИЖЕНИЕ ПО КРУГУ, ЭЛЛИПСУ, СПИРАЛИ

 

По просьбе читателя на этот раз мы рассмотрим пример того, как заставить двигаться объект по кругу и производным от него траекториям.

Для того, чтобы описать траекторию движения по кругу, нам понадобится знать координаты центра вращения, угол поворота и радиус вращения.

Для описания траектории движения по эллипсу нам понадобится знать два радиуса: по оси х и по оси y. А поскольку у круг это частный случай эллипса, у которого равны эти радиусы, то и скрипт будем писать сразу для эллипса, а когда понадобится двигаться по кругу, просто зададим равные радиусы.

Поскольку функции мы уже проходили, то для удобства воспользуемся рассчетом траектории при помощи функции.

Функция на входе будет принимать следующие аргументы:

angle - угол поворота

x, y - координаты центра вращения

x_radius, y_radius - радиусы по осям

а теперь рассмотрим собственно скрипт (который как обычно можно скопировать и воткнуть в мувик)

 

onClipEvent (load) { // при загрузке

Math.rad = 180/Math.PI; // рассчитаем отношение радиан к градусам (математичнеские функции, в которых используютсЯ углы на входе требуют значение в радианах)

function fncCircleMotion(angle, x, y, x_radius, y_radius) { // задаем функцию с аргументами

var r_ang = angle/Math.rad; // переводим угол поворота из градусов в радианы

this._x = x+x_radius*Math.cos(r_ang); // к центру вращениЯ по оси х прибавлЯем произведение косинуса угла поворота и радиуса по оси х и результат присваиваем _x позиции

this._y = y+y_radius*Math.sin(r_ang); // почти также рассчитываем и позицию по оси y

}

}

onClipEvent (enterFrame) { // и затем каждый кадр

this.fncCircleMotion(a+=5, 200, 200, 100, 100); // увеличиваЯ значение угла поворота рассчитываем новую позицию мувиклипа.

}

 

а теперь используя ту же самую функцию зададим движение по конусообразной спирали:

 

this.fncCircleMotion(a+=5, 200, y++, xr+=1, yr+=.5);

 

а теперь самое главное: не стесняйтесь экспериментировать, попробуйте задать движение по эллипсу, по спирали, по приплюснутой спирали, впрочем это далеко не полный перечень - экспериментируйте!

 

 

Hosted by uCoz