![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2015
Сообщений: 26
|
Здравствуйте!
Задача: При нажатии кнопки мыши, в точке "А" появляется объект. И начинает двигаться в ту точку где был курсор мышки во время щелчка, по прибытию удаляется. я создал объект (класс) поставил слушателя событий на щелчек мыши. по щелчку объект появляется в точке но как же наделить объект таким свойством, чтобы он летел туда куда мышка щелкнула? Подскажите пожалуйста! Думаю для Вас, опытных флэшеров это не составит труда. Заранее, Большое спасибо! |
|
|||||
|
Lorem ipsum
|
А как ты делаешь? Хотя бы первые шаги до того момента, где затык.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Jun 2015
Сообщений: 26
|
есть класс Rocket (extend MovieClip)
в основном классе стоит обработчик событий: var r:Rocket = new Rocket; stage.addEventListener(MouseEvent.MOUSE_DOWN, fire); function fire(e:Event){ addChild(r); r.x = 30; r.y = 230; } Как сделать чтобы ракета (r:Rocket) летела в точку куда щелкнула мышка? |
|
|||||
|
stageX и stageY, только вместо Event напишите MouseEvent
|
|
|||||
|
У меня почти то же самое что и у ZackMercury, но вдруг пригодится.
Это класс вашей ракеты. У неё есть метод moveToTarget, который двигает ракету к заданной цели. package { import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; /** * ... * @author samana */ public class Rocket extends Sprite { private var _target:Point = new Point(); //сюда запишем точку, куда нужно двигаться (клик мыши) private var _speedX:Number; private var _speedY:Number; public var speed:Number = 10; //скорость движения // начать движение к заданной точке public function moveToTarget(targetX:Number, targetY:Number):void { _target.x = targetX; _target.y = targetY; var dx:Number = _target.x - x; var dy:Number = _target.y - y; var ang:Number = Math.atan2(dy, dx); _speedX = Math.cos(ang) * speed; _speedY = Math.sin(ang) * speed; //повернуть объект в сторону движения если надо rotation = ang / Math.PI * 180; addEventListener(Event.ENTER_FRAME, enterFrame_moved); } private function enterFrame_moved(e:Event):void { //узнаём расстояние между объектом и целью var dx:Number = _target.x - x; var dy:Number = _target.y - y; var dist:Number = Math.sqrt(dx * dx + dy * dy); //если расстояние между объектом и целью меньше шага скорости, то останавливаемся if (dist < speed) { x = _target.x; y = _target.y; removeEventListener(Event.ENTER_FRAME, enterFrame_moved); if (parent) parent.removeChild(this); //trace(this, "stoped"); } //иначе движемся к цели else { x += _speedX; y += _speedY; //trace(this, "is moved"); } } } } public class Main extends Sprite { private var _pointA:Point; public function Main() { _pointA = new Point(50, 50); stage.addEventListener(MouseEvent.CLICK, stage_click); } private function stage_click(e:MouseEvent):void { var rocket:Rocket = new Rocket(); rocket.x = _pointA.x; rocket.y = _pointA.y; addChild(rocket); rocket.moveToTarget(stage.mouseX, stage.mouseY); } } |
|
|||||
|
Регистрация: Jun 2015
Сообщений: 26
|
2ZackMercury
2samana Ребята, спасибо огромное!!! Сейчас буду изучать и внедрять, это именно то что нужно!!!! Большое спасибо! Добавлено через 1 минуту p.s. Загрузил картинку в профиль, еще несколько дней назад, а она не отображается, Уже и модератору писал...не отвечает... |
|
|||||
|
Регистрация: Jun 2015
Сообщений: 26
|
2ZackMercury
Ахахах) Спасибо)) |
|
|||||
|
Lorem ipsum
|
Оффтоп: ава классная!
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|