Цитата:
Сообщение от me2
Не совсем понятен T=10000; чуть подробней можно?
|
T – это время, в течение которого будет продолжаться вращение (назовём его полное время). Так как
getTimer() даёт время в миллисекундах, то для удобства (чтобы всё время не делить начальное время на
1000) полное время также задаётся в миллисекундах.
Полное время нужно, во-первых, для того, чтобы привести текущее время к заданному отрезку отрезку (в моём примере
(-1, 1), можно к любому другому, как вам удобно). А, во-вторых, чтобы определить момент окончания вращения. Таким образом, в каждом кадре нужно проверять текущее время вращения, которое равно
getTimer() - t0. Вычитать
t0 нужно для того, чтобы время шло с
0, так как
getTimer() возвращает время, прошедшее с момента запуска плеера. Как только величина
getTimer() - t0 превзойдёт
T, то в последний раз вычисляем угол для времени
T, а затем заканчиваем анимацию (путём отписывания от события
ENTER_FRAME, либо установки флага, как вам больше нравится).
Цитата:
Сообщение от me2
Еще раз про задачу.
Пользователь накручивает некоторый вектор Nое кол-во раз, может совершить хоть 20000 витков, и в этоге получится какой-то бешеный угол в 34234Пи+отступ
И вот на этот угол совершенно не торопясь будет поворачиваться объект.
|
Смотрим пример, который я вам приводил. Задаём
N, исходя из того, сколько витков пользователь совершил (
N не обязательно должно быть целым). Засекаем
t0 и запускаем анимацию по тем формулам, что я привёл. Как только перешли за
T, поворачиваем объект на угол, вычисленный для времени
T и останавливаем анимацию. По-моему, всё просто
Можно (и даже лучше) взять не такую формулу, а что-то типа
вашОбъект.rotation = angle0 + (angle1 – angle0)*t/T, где
angle0 – начальный угол поворота в радианах,
angle1 – конечный угол поворота в радианах,
t = getTimer() – t0 задаёт текущее время.
Цитата:
Сообщение от me2
Причём чем больше кол-во витков тем "туже" идёт поворот (скорость уменьшим), но это уже лирика =)
|
Это как раз-таки можно сделать, задавая перед запуском анимации
T в зависимости от нужного количества витков. Чем больше будет полное время вращения, тем меньше будет скорость, естественно.