Показать сообщение отдельно
Старый 25.04.2011, 22:08
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Тут все идет от угла.

Дано:
- шарик находится в точке (ballX, ballY)
- шарик обладает начальной угловой скоростью w и двигается с замедлением
- шарик должен сделать n полных оборотов и остановиться в точке с координатами (cellX, cellY) через t сек

Найти:
- угловой путь, пройденный шариком

Зачем:
- чтобы проанимировать шарик простым твином

Решение:
1. Переводим координаты шарика и ячейки в угловые положения при помощи Math.atan2.
2. Искомый путь будет n*(2*Math.PI)*Math.abs(cellAngle - ballAngle)

Теперь как это анимировать. Твин по сути занимается тем, что изменяет заданный параметр с начального значения на конечное в течение заданного промежутка времени по заданному закону. При помощи стандартного твина, изменение свойства angle с плавным замедлением будет выглядеть так:
Код AS3:
this.ballTween = new Tween(this.ball, "angle", Regular.easeOut, currentAngle, finalAngle, t, true);
Чтобы это имело смысл, шарик должен иметь сеттер angle, который будет выставлять его в нужные координаты:
Код AS3:
public function set angle(value:Number):void{
    this._angle = value;
    this.x = center.x + Math.cos(value) * bigRadius;
    this.y = center.y + Math.sin(value) * smallRadius;
}//set angle
__________________
тонкий тролль, осеянный благодатью


Последний раз редактировалось Gaen; 28.04.2011 в 01:14.