Цитата:
Сообщение от SamFR
Да зачем же все эти ухищрения? Всё ж просто:
 Код AS3:
//перед началом вращения
var t0:uint = getTimer(); //момент начала вращения
var T:uint = 10000; //полное время вращения (в мс.)
//каджый кадр
var t:Number = 2*(getTimer() - t0)/T - 1; //от -1 (в начале вращения) до 1 (в конце)
object.rotation = N*t*Math.PI; //от -N*PI в начале вращения до N*PI в конце
Таким же макаром можно, при желании, заставить угол изменяться по синусоиде, например. И про накопление погрешности можно забыть.
|
К чему-то подобному бесконечно стремятся мои умозаключения. Не совсем понятен T=10000; чуть подробней можно?
Еще раз про задачу.
Пользователь накручивает некоторый вектор Nое кол-во раз, может совершить хоть 20000 витков, и в этоге получится какой-то бешеный угол в 34234Пи+отступ
И вот на этот угол совершенно не торопясь будет поворачиваться объект. (r+=(endR-r)*speed)
Причём чем больше кол-во витков тем "туже" идёт поворот (скорость уменьшим), но это уже лирика =)
P.s.
немного пояснений: нет проблемы от -180 до 180, преобразовать это не составляет труда, есть проблема, что после 360 идёт 0 а не 361 и т.д.
Ибо при "мгновенном" повороте что 360 что 0 - одно и тоже, а при динамическом, думаю понятно как всё происходит.