ДВИЖЕНИЕ ПО КРУГУ, ЭЛЛИПСУ, СПИРАЛИ
По просьбе читателя на этот раз мы рассмотрим пример того, как заставить двигаться объект по кругу и производным от него траекториям.
Для того, чтобы описать траекторию движения по кругу, нам понадобится знать координаты центра вращения, угол поворота и радиус вращения.
Для описания траектории движения по эллипсу нам понадобится знать два радиуса: по оси х и по оси 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);
а теперь самое главное: не стесняйтесь экспериментировать, попробуйте задать движение по эллипсу, по спирали, по приплюснутой спирали, впрочем это далеко не полный перечень - экспериментируйте!