|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2013
Сообщений: 89
|
совет полет объекта в место нажатия мышки
Привет.
Моя задача - выпустить объект в место нажатия мыши на сцене. Проблема: enter_frame у меня используется для перемещения объекта из которого вылетает пуля. Сначала я задумал завести еще один enter_frame, отдельный для полета пули Но получил ошибку TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.events::Event@16a21dd1 в flash.events.MouseEvent. Сейчас в голове крутится создать отдельный класс, в который я буду закидывать текущие координаты объекта из которого вылетает пулька, заведу там enter_frame и буду, с помощью проекций на оси х и у перемещать пульку. Но. Будет ли такой подход правильным? Может ли возникнуть проблема с enter_frame(Мне кажется что enter_frame может быть только один)? Добавлено через 1 минуту А может есть способ подписаться на один и тот же enter_frame из обработчика клика мыши? Добавлено через 9 минут Получше опишу что у меня в кодах: 1.Я создаю объект, управляющийся с клавиатуры, подключаю к нему enter_frame 2.Нажимаю по сцене, 3.В обработчике события нажатия мыши я создаю пульку в текущем положении объекта из которого он должен вылетать. 4.Сталкиваюсь с проблемой: В enter_frame мне нужно управлять именно тем объектом, который у меня появился в обработчике мыши. Возможно получить из обработчика mouseEvent координаты нажатия мыши и закинуть их в enter-frame для управления объекта? |
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Например можно использовать библиотеку FPTween:
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.MouseEvent; import fl.transitions.easing.Back; import ru.flashpress.tween.display.FPTweenSprite; [SWF(frameRate="30")] public class tweenBall extends Sprite { private var ball:FPTweenSprite; public function tweenBall() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; // ball = new FPTweenSprite(); ball.graphics.beginFill(0xff0000, 1); ball.graphics.drawCircle(0, 0, 20); ball.x = this.stage.stageWidth/2; ball.y = this.stage.stageHeight/2; ball.addTween('x', Back.easeOut, 0.6); ball.addTween('y', Back.easeOut, 0.6); this.addChild(ball); // this.stage.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { ball.x = this.mouseX; ball.y = this.mouseY; } } }
__________________
FlashPress.ru | Blog |
|
|||||
Регистрация: Apr 2013
Сообщений: 89
|
А собственными средствами as3 нельзя простенько, как-либо сделать?
|
|
|||||
Можно конечно, тему уже открывали
http://www.flasher.ru/forum/showthread.php?t=205640 Посмотрите второй ответ, там полностью рабочий код (только не называйте класс пульки Pulka) Если нужно удалять при долета до точки, сделайте простую проверку на пройденную дистанцию. Последний раз редактировалось KumoKairo; 23.03.2014 в 09:53. |
|
|||||
Регистрация: Apr 2013
Сообщений: 89
|
Цитата:
Супер пример, супер комменты, классы новые и способ принципиально новый, но я обязательно разберусь. |
Часовой пояс GMT +4, время: 19:18. |
|
« Предыдущая тема | Следующая тема » |
|
|