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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.02.2010, 14:19
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 21  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Изобретатели велосипедов
Цитата:
Сообщение от sltt Посмотреть сообщение
да, но я имею в виду движение которое сначала ускоренное, а под конец тормозящее.
держи
Код AS3:
import com.greensock.*;
import com.greensock.easing.*;
TweenLite.to(mc, 1, {x:65, y:117, ease:Cubic.easeOut});

Старый 27.02.2010, 14:30
sltt вне форума Посмотреть профиль Отправить личное сообщение для sltt Найти все сообщения от sltt
  № 22  
Ответить с цитированием
sltt

Регистрация: Jan 2010
Сообщений: 26
Bgg, спасибо, но мне нужен код, который я бы смог контролировать в любой момент. Твины контролировать нельзя.

Старый 27.02.2010, 14:37
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 23  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
sltt, можно. Смотря что вам нужно. Можно остановить, возобновить, промотать в обратную сторону твин; повесить события о начале, окончании, процессе анимации. Само собой все свойства объекта так же в ваших руках.

Старый 27.02.2010, 15:09
sltt вне форума Посмотреть профиль Отправить личное сообщение для sltt Найти все сообщения от sltt
  № 24  
Ответить с цитированием
sltt

Регистрация: Jan 2010
Сообщений: 26
В общем я имею ввиду, что мне не так нужно двигать объект, как нужно знать координаты для дальнейшего расчета.
Движение должно быть ускоряющимся, а потом тормозящим. Как здесь:
Цитата:
Сообщение от silin Посмотреть сообщение
Код AS3:
public class MouseHunter extends Sprite
{
	private var a:Number = 0.1;
	private var damp:Number = 0.925;
	private var sX:Number = 0;
	private var sY:Number = 0;
 
	public function MouseHunter() 
	{
		graphics.beginFill(0);
		graphics.drawCircle(0, 0, 20);
		addEventListener(Event.ADDED_TO_STAGE, onStage);
	}
 
	private function onStage(evnt:Event):void 
	{
		removeEventListener(Event.ADDED_TO_STAGE, onStage);
		addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);
	}
 
	private function onMouseMoveHandler(evnt:MouseEvent):void 
	{
		sX = a * mouseX;
		sY = a * mouseY;
	}
 
	private function onEnterFrameHandler(event:Event):void 
	{
		x += sX *= damp;
		y += sY *= damp;
	}
}

Хотя мне не понятно что такое
Код AS1/AS2:
	private var a:Number = 0.1;
	private var damp:Number = 0.925;
я понял что меняя их, можно менять скорость этого передвижения. А если точнее то их можно подобрать так чтоб это движение произошло ровно за N шагов.
И подобрать их скорее всего можно по простой формуле типа
Код AS1/AS2:
	private var stepN:Number = 15;
 
	private var a:Number = stepN / 10;
	private var damp:Number = stepN / a;
Только я немогу догнать по какой именно формуле. Думал вдруг silin вспомнит.

Старый 27.02.2010, 16:42
GentleFLASH вне форума Посмотреть профиль Отправить личное сообщение для GentleFLASH Найти все сообщения от GentleFLASH
  № 25  
Ответить с цитированием
GentleFLASH

Регистрация: Apr 2009
Сообщений: 117
sltt, вообще то здесь движение всегда будет тормозящим. Эффект ускорения возникает оттого, что ты мышку таскаешь плавно
А насчет рассчета движения - это геометрическая прогрессия, как я понимаю.

Старый 11.01.2012, 22:07
Scorp2008 вне форума Посмотреть профиль Отправить личное сообщение для Scorp2008 Найти все сообщения от Scorp2008
  № 26  
Ответить с цитированием
Scorp2008
[+1 13.07.11]
[++1 13.07.11]

Регистрация: Dec 2009
Сообщений: 42
Цитата:
Сообщение от silin Посмотреть сообщение
Код AS3:
public class MouseHunter extends Sprite
{
	private var a:Number = 0.1;
	private var damp:Number = 0.925;
	private var sX:Number = 0;
	private var sY:Number = 0;
 
	public function MouseHunter() 
	{
		graphics.beginFill(0);
		graphics.drawCircle(0, 0, 20);
		addEventListener(Event.ADDED_TO_STAGE, onStage);
	}
 
	private function onStage(evnt:Event):void 
	{
		removeEventListener(Event.ADDED_TO_STAGE, onStage);
		addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);
	}
 
	private function onMouseMoveHandler(evnt:MouseEvent):void 
	{
		sX = a * mouseX;
		sY = a * mouseY;
	}
 
	private function onEnterFrameHandler(event:Event):void 
	{
		x += sX *= damp;
		y += sY *= damp;
	}
}
Пытаюсь сделать плавное движение по этому коду, по оси X. Так вот есть клип heromc, однако в Update пишу код heromc.x += sX *= damp; - и объект улетает черт знает куда, а не за мышью движется, в чем проблема может быть ?

Старый 11.01.2012, 22:33
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 27  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ну обычно, куда напишешь - туда и улетает..
мы должны угадать где вы и что-то пишите ?
sX - величина, пропорциональная расстоянию до мыши, ее корректируем в MOUSE_MOVE, чтобы все это работало для heromc, видимо и определять ее нужно примерно как sX = 0.1 * heromc.mouseX;

Старый 11.01.2012, 23:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 28  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Достаточно по x и y добавлять 1/10 от разницы между конечной (координаты мыши) и текущей точкой.

Старый 06.03.2012, 03:20
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 29  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
а как сделать движение к определенной точке сначала с ускорением (скорость увеличивается с нуля), а когда до цели осталось определенное расстояние (например, половина) - с замедлением до нуля, в обработчике ENTER_FRAME?

Старый 06.03.2012, 04:19
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 30  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от ChuwY Посмотреть сообщение
Главное, чтобы easeInOut
Так на деле выйдет, что при каждом движении курсора предыдущий твин будет останавливаться, а новый начинаться с нулевой скоростью — т.е. будет рывками.

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
движение , как , мышь , торможение , ускорение
Опции темы
Опции просмотра

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

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


 


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


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