![]() |
|
||||||||||
|
|||||
|
[+4 19.03.08]
Регистрация: Apr 2007
Адрес: Ukraine,Kharkov
Сообщений: 103
|
Помогите, пожулуйста, реализовать следущее:
кликаем мышкой в любом месте рабочего поля, и мувик движется в направлении курсора и пролетает дальше с одинаковой скоростью. я знаю простой способ как обьект привязать к мышке чтобы он летел к курсору и цеплялся к нему: Но как сделать чтобы при клике, мувик летел в направлении мыши и пролетал дальше с равномерной скоростью? Заранее благодарю. |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 40
|
Похоже, нужно решить уравнение прямой, найти точку на прямой, котой принадлежит точка курсора.
Что то типа x + by + c = 0 Прямую можно провести через две точки , которые мы знаем: точка курсора центр мувика. нужно найти точку, удалённую от этих двух точек. |
|
|||||
|
[+4 19.03.08]
Регистрация: Apr 2007
Адрес: Ukraine,Kharkov
Сообщений: 103
|
не совсем понял. Мне нужно в момент клика определить точку клипа и точку клика и как то установить прямую и задать движение?
хорошо, если я узнаю эти точки, то как все же реализовать движение? ![]() |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 40
|
наверно так же как и здесь у тебя:
только вместо mouseX и mouseY нужна точка.Х точка .У. |
|
|||||
|
Регистрация: May 2006
Сообщений: 36
|
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); } ![]() |
|
|||||
|
Это вопрос не по АС а по математике. Находим по двум точкам вектор, находим dx и dy в одну единицу времени для движения равномерного по этому вектору а дальше по таймеру делаем движение хоть до бесконечности.
Точки знаем (мувик и мышка), вектор найти можем. Никаких проблем |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 40
|
точно, дельту вычислить. Забыл как называется
Вот только код кто-то напишет? ![]() |
|
|||||
|
[+4 18.09.08]
Регистрация: May 2006
Сообщений: 79
|
|
|
|||||
|
Регистрация: Aug 2008
Сообщений: 40
|
точно. Раз мувик летит в направлении мышки, то пусть и дальше продолжает лететь.
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
|
Вот, держите:
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; } } } Последний раз редактировалось musat; 21.11.2008 в 16:27. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|