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

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

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

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Question Движение за мышью с ускорением, и полным торможением к прибытию к мыши, как?

Знаю как определить угол поворота в сторону мышки, а следовательно и то, как двигать объект в сторону мышки.
Ускорение естественно тоже понятно.
Непонятно одно, как сделать так, чтобы объект в определенном месте (по расчетам) начинал тормозить так, чтобы он затормозил полностью в момент когда он столкнется с координатами мышки?

Сейчас же додумался до того, что можно начинать торможение тогда, когда мышка перестает двигаться, в принципе мне и это бы подошло, но все таки остается интересным как сделать описанное мною выше.
__________________
Рожденный ползать, везде пролезет...

Старый 29.09.2009, 19:47
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 2  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Как вариант, по теореме Пифагора определять расстояние между объектом и курсором и домножать на него скорость объекта. Соответственно, чем ближе - тем медленнее, а в точке нахождения курсора расстояние будет нулевым, соответственно, объект остановится.
__________________
Дело не в тебе

Старый 29.09.2009, 20:11
Neirol вне форума Посмотреть профиль Отправить личное сообщение для Neirol Посетить домашнюю страницу Neirol Найти все сообщения от Neirol
  № 3  
Ответить с цитированием
Neirol
 
Аватар для Neirol

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Т.е., скажем:
Код AS3:
if(hero.x > mouseX) var distanceX = (hero.x - mouseX) * speed;
else var distanceX = (mouseX - hero.x) * speed;
 
if(hero.y > mouseY) var distanceY = (hero.y - mouseY) * speed;
else var distanceY = (mouseY - hero.y) * speed;
И сама distance будет являться и скоростью для определения проекций скоростей на X и Y?
Т.е.
Код AS3:
hero.x += distanceX * Math.cos(angle);
hero.y += distanceY * Math.sin(angle);
Таким образом?
__________________
Рожденный ползать, везде пролезет...

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а че бы не по-простому
Код AS3:
public class MouseHunter extends Sprite
{
	private const a:Number = 0.2;
	public function MouseHunter() 
	{
		graphics.beginFill(0);
		graphics.drawCircle(0, 0, 20);
		addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
	}
 
	private function onEnterFrameHandler(event:Event):void 
	{
		x += a * mouseX;
		y += a * mouseY;
	}
}

Старый 29.09.2009, 20:36
Neirol вне форума Посмотреть профиль Отправить личное сообщение для Neirol Посетить домашнюю страницу Neirol Найти все сообщения от Neirol
  № 5  
Ответить с цитированием
Neirol
 
Аватар для Neirol

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Напиши пожалуйста решение для AS 3.0.
Твой вариант на AS 2.0.
__________________
Рожденный ползать, везде пролезет...

Старый 29.09.2009, 21:26
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 6  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
Сообщение от Neirol Посмотреть сообщение
Напиши пожалуйста решение для AS 3.0.
Твой вариант на AS 2.0.
и где здесь as2? ниодного намека на as2 не вижу
__________________
я могу стать всем, если только захочу

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

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Ну точно могу сказать что это не AS 3. Т.к. в AS 3 все методы расфасованы по пакетам, которые нужно подключать.
А также, некоторые методы используемые silin в AS 3 вообще удалены.
__________________
Рожденный ползать, везде пролезет...

Старый 29.09.2009, 22:44
GFreemen вне форума Посмотреть профиль Отправить личное сообщение для GFreemen Найти все сообщения от GFreemen
  № 8  
Ответить с цитированием
GFreemen
 
Аватар для GFreemen

Регистрация: Oct 2006
Адрес: Волгодонск
Сообщений: 182
Уважаемый, Neirol, вы не правы...

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

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Ну тогда получается что это не я не прав, а Flash CS4 не прав
Я записал написанное silin в отдельный файл и назвал его так же, как и он назвал свой класс.
Далее самостоятельно подключил пакеты и в ответ получил ошибку:
Migration issue: The method drawCircle is no longer supported.
В замен которого, как я только что заметил должна идти функция drawOval (подсказывает флеш), хотя такую функцию он тоже не воспринимает....

И вдобавок такая ошибка насчет хэндлера EnterFrame....
1046: Type was not found or was not a compile-time constant: Event.

Добавлено через 34 секунды
Т.е. в итоге с моими исправлениями и подсказками флеша:
Код AS3:
package {
	import flash.display.Sprite;
	import flash.display.Graphics;
 
	public class MouseHunter extends Sprite
	{
		private const a:Number = 0.2;
		public function MouseHunter() 
		{
			graphics.beginFill(0);
			graphics.drawOval(0, 0, 20);
			this.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		}
 
		private function onEnterFrameHandler(e:Event):void 
		{
			x += a * mouseX;
			y += a * mouseY;
		}
	}
}
__________________
Рожденный ползать, везде пролезет...

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
о сколько на открытий чудных..

Neirol, сори за непонятки,
просто объявление пакета и добавление необходимых импортов дело хоть и обыденно-обязательное, но к логике кода никакого отношения не имеет, поэтому и привел без них, здесь это в общем-то обычное явление, не удивляйся

Добавлено через 4 минуты
насчет 'The method drawCircle is no longer supported' компилятор тебя обманывает: еще поддерживается

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

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

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

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


 


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


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