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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.11.2008, 14:31
Danss вне форума Посмотреть профиль Отправить личное сообщение для Danss Найти все сообщения от Danss
  № 1  
Ответить с цитированием
Danss
[+4 19.03.08]
 
Аватар для Danss

Регистрация: Apr 2007
Адрес: Ukraine,Kharkov
Сообщений: 103
По умолчанию движение по направлению мыши

Помогите, пожулуйста, реализовать следущее:

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

я знаю простой способ как обьект привязать к мышке чтобы он летел к курсору и цеплялся к нему:

Код AS3:
_mc.x -= (_mc.x - mouseX) / 4;
_mc.y -= (_mc.y - mouseY) / 4;
Но как сделать чтобы при клике, мувик летел в направлении мыши и пролетал дальше с равномерной скоростью?
Заранее благодарю.

Старый 21.11.2008, 14:38
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 2  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
Похоже, нужно решить уравнение прямой, найти точку на прямой, котой принадлежит точка курсора.
Что то типа x + by + c = 0
Прямую можно провести через две точки , которые мы знаем:

точка курсора
центр мувика.

нужно найти точку, удалённую от этих двух точек.

Старый 21.11.2008, 14:44
Danss вне форума Посмотреть профиль Отправить личное сообщение для Danss Найти все сообщения от Danss
  № 3  
Ответить с цитированием
Danss
[+4 19.03.08]
 
Аватар для Danss

Регистрация: Apr 2007
Адрес: Ukraine,Kharkov
Сообщений: 103
не совсем понял. Мне нужно в момент клика определить точку клипа и точку клика и как то установить прямую и задать движение?
хорошо, если я узнаю эти точки, то как все же реализовать движение?

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

Регистрация: Aug 2008
Сообщений: 40
наверно так же как и здесь у тебя:

Код AS3:
_mc.x -= (_mc.x - mouseX) / 4;
_mc.y -= (_mc.y - mouseY) / 4;
только вместо mouseX и mouseY нужна точка.Х точка .У.

Старый 21.11.2008, 15:21
Irradiance вне форума Посмотреть профиль Отправить личное сообщение для Irradiance Найти все сообщения от Irradiance
  № 5  
Ответить с цитированием
Irradiance

Регистрация: May 2006
Сообщений: 36
Код AS3:
var s:Sprite = new Sprite();
var time:int = 30;
var spdX:Number;
var spdY:Number;
 
addChild (s);
 
this.addEventListener (MouseEvent.MOUSE_DOWN, setProps);
 
function setProps (e:MouseEvent):void {
	spdX = (e.stageX - s.x)/time;
	spdY = (e.stageY - s.y)/time;
	if (!s.hasEventListener(Event.ENTER_FRAME)) s.addEventListener (Event.ENTER_FRAME, moveTarget);
}
 
function moveTarget (e:Event):void {
	s.x += spdX;
	s.y += spdY;
	trace (s.x, s.y);
}
скорость здесь только каждый раз разная, при желании можно и ее уровнять

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

Регистрация: Apr 2007
Сообщений: 143
Отправить сообщение для NePridymal с помощью ICQ
Это вопрос не по АС а по математике. Находим по двум точкам вектор, находим dx и dy в одну единицу времени для движения равномерного по этому вектору а дальше по таймеру делаем движение хоть до бесконечности.
Точки знаем (мувик и мышка), вектор найти можем. Никаких проблем

Старый 21.11.2008, 16:02
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 7  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
точно, дельту вычислить. Забыл как называется Вот только код кто-то напишет?

Старый 21.11.2008, 16:10
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 8  
Ответить с цитированием
gen4
[+4 18.09.08]

Регистрация: May 2006
Сообщений: 79
Код:
speed = 5
dx = (mc.x - mousex)/5
dy = (mc.y - mousey)/5

onFrame{
mc.x+=dx;
mc.y+=dy;
}

Старый 21.11.2008, 16:23
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 9  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
точно. Раз мувик летит в направлении мышки, то пусть и дальше продолжает лететь.

Старый 21.11.2008, 16:24
musat вне форума Посмотреть профиль Отправить личное сообщение для musat Найти все сообщения от musat
  № 10  
Ответить с цитированием
musat
 
Аватар для musat

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
Вот, держите:
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite {
		private var s:Sprite;
		private var dx:Number;
		private var dy:Number;
		private var speed:Number = 10;
 
		public function Main() {
			s = new Sprite();
			s.graphics.beginFill(0xFF0000);
			s.graphics.drawCircle(10,10,10);
			addChild(s);
 
			stage.addEventListener(MouseEvent.MOUSE_DOWN,startMotion);
		}
 
		private function startMotion(e:MouseEvent):void {
			dx = (mouseX - s.x) / speed;
			dy = (mouseY - s.y) / speed;
 
			if (!s.hasEventListener(Event.ENTER_FRAME)) s.addEventListener(Event.ENTER_FRAME,move);
		}
 
		private function move(e:Event):void {
			s.x += dx;
			s.y += dy;
		}
	}
}
Вложения
Тип файла: rar Main.rar (4.9 Кб, 109 просмотров)


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

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

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


 


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


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