![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2008
Сообщений: 24
|
Нужно сделать программную анимацию движения пунктов меню по такой траектории. При этом должна быть возможность замедлять их движение. Т.е. пока указатель мыши находится вне области этого меню - пункты двигаются равномерно, когда указатель мыши попадает в область этого меню - движение пунктов замедляется и они останавливаются, когда указатель мыши уходит из области меню - движение с ускорением начинается опять.
В голову ничего, кроме как прогнать по этой траектории клип с сохранением его координат в массив, а потом использования этих координат, не приходит. Так как движение должно быть с замедлением-ускорением, то в голову опять приходит мысля - при равномерном движении на каждый кадр брать из массива значения с некоторым шагом, а при замедлении (ускорении) уменьшать до 1 (увеличивать до шага равномерного движения) этот шаг. Но так как равномерное движение предполагается достаточно медленное, то для создания массива координат требуется достаточно много значений. Возник вопрос - может можно это реализовать как-то по-другому, более простым способом? |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Пакет классов bezier.ru вам в помощь
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 24
|
>при помощи программной анимации по направляющей
Если я правильно понял, - это сделать клип-контейнер, в котором сделать анимацию этих пунктов меню, а потом программно управлять текущим кадром в этом клипе-контейнере? Если - да, то вряд ли... Для прохода половины пути нужно примерно 1000 кадров (на равномерной скорости) при 30 к/сек. Для возможности замедления - нужно больше... |
|
|||||
|
strange mood
|
Я надеялся, что можно программно пустить анимацию по направляющей каким-нибудь setGuide. Что ж, мои надежды не оправдались.
А вот с управлением номером кадра в заранее анимированном мувике можно попробовать сделать, появилась одна идея. Есть мувик с анимацией прохода объекта по направляющей. Берём этот мувик, в цикле пробегаемся по кадрам и в каждом получаем координаты объекта. Таким образом строится тот самый массив с координатами. Анимация пунктов меню производится перемещением между полученными точками. Если точек много (а 2к это вполне много) то можно без потери эффекта гладких поворотов просто перемещаться между точками по прямой. Ускорение/замедление обеспечивается варьированием времени перемещения между точками.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 24
|
Я это и собирался делать. Но посмотрю, что как можно для этого использовать bezier.ru
|
|
|||||
|
Регистрация: Dec 2007
Сообщений: 204
|
Вот это вам поможет - http://blog.greensock.com/tweenmaxas3/
|
|
|||||
|
Может пригодится в первый кадр
//безье по трем точкам
var i:int, j:int, t:Number;
//p(t) = (1-t)*(1-t)*p0+2*t*(1-t)p1+t*t*p2
var _x:Number = 0;
var _y:Number = 0;
var _x1:Number = 1000;
var _y1:Number = 200;
var _x2:Number = 0;
var _y2:Number = 400;
var interval:uint = setInterval(inter_func,35);
function inter_func() {
if (i==0) {
graphics.clear();
graphics.lineStyle(0);
graphics.moveTo(_x,_y);
}
i++;
t = i/100;
graphics.lineTo(сurve_to(_x,_x1,_x2,t),сurve_to(_y,_y1,_y2,t));
if (i>100) {
i=0;
}
}
function сurve_to(p0:int,p1:int,p2:int,t:Number) {
return (1-t)*(1-t)*p0+2*t*(1-t)*p1+t*t*p2;
}
Последний раз редактировалось Alex Lexcuk; 02.09.2008 в 00:21. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|