Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2008, 03:59
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 1  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
По умолчанию Движение по кривой

Нужно сделать программную анимацию движения пунктов меню по такой траектории. При этом должна быть возможность замедлять их движение. Т.е. пока указатель мыши находится вне области этого меню - пункты двигаются равномерно, когда указатель мыши попадает в область этого меню - движение пунктов замедляется и они останавливаются, когда указатель мыши уходит из области меню - движение с ускорением начинается опять.
В голову ничего, кроме как прогнать по этой траектории клип с сохранением его координат в массив, а потом использования этих координат, не приходит.
Так как движение должно быть с замедлением-ускорением, то в голову опять приходит мысля - при равномерном движении на каждый кадр брать из массива значения с некоторым шагом, а при замедлении (ускорении) уменьшать до 1 (увеличивать до шага равномерного движения) этот шаг.
Но так как равномерное движение предполагается достаточно медленное, то для создания массива координат требуется достаточно много значений.
Возник вопрос - может можно это реализовать как-то по-другому, более простым способом?
Изображения
 

Старый 30.08.2008, 04:01
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 2  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Пакет классов bezier.ru вам в помощь

Старый 30.08.2008, 04:18
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 3  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

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

Старый 30.08.2008, 04:25
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 4  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
>при помощи программной анимации по направляющей
Если я правильно понял, - это сделать клип-контейнер, в котором сделать анимацию этих пунктов меню, а потом программно управлять текущим кадром в этом клипе-контейнере?
Если - да, то вряд ли... Для прохода половины пути нужно примерно 1000 кадров (на равномерной скорости) при 30 к/сек. Для возможности замедления - нужно больше...

Старый 30.08.2008, 05:53
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

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

А вот с управлением номером кадра в заранее анимированном мувике можно попробовать сделать, появилась одна идея.

Есть мувик с анимацией прохода объекта по направляющей. Берём этот мувик, в цикле пробегаемся по кадрам и в каждом получаем координаты объекта. Таким образом строится тот самый массив с координатами.

Анимация пунктов меню производится перемещением между полученными точками. Если точек много (а 2к это вполне много) то можно без потери эффекта гладких поворотов просто перемещаться между точками по прямой.

Ускорение/замедление обеспечивается варьированием времени перемещения между точками.
__________________
тонкий тролль, осеянный благодатью

Старый 30.08.2008, 16:26
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 6  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
Я это и собирался делать. Но посмотрю, что как можно для этого использовать bezier.ru

Старый 01.09.2008, 23:21
MonkDead вне форума Посмотреть профиль Отправить личное сообщение для MonkDead Посетить домашнюю страницу MonkDead Найти все сообщения от MonkDead
  № 7  
Ответить с цитированием
MonkDead
 
Аватар для MonkDead

Регистрация: Dec 2007
Сообщений: 204
Вот это вам поможет - http://blog.greensock.com/tweenmaxas3/

Старый 02.09.2008, 00:18
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 8  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Может пригодится в первый кадр
Код:
//безье по трем точкам
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;
}
ctrl+enter


Последний раз редактировалось Alex Lexcuk; 02.09.2008 в 00:21.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.