|
|
|||||
Регистрация: Sep 2011
Сообщений: 7
|
Зажатая кнопка
Всем привет. Вопрос по Actionscript 3.0. Подскажите пожалуйста, как можно заставить объект двигаться по полю, при зажимании виртуальной кнопки(button)? Ну то есть что-бы объект двигался в нужном направлении до тех пор, пока курсор давит на эту кнопку. Я в этом деле новичок, всю голову сломал уже, вот сдался, не выдержал. Вот кусок проекта, где управление реализовано с помощью стрелок на клавиатуре. Как заменить их на виртуальные кнопки
import flash.events.KeyboardEvent; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey) stage.addEventListener(KeyboardEvent.KEY_UP, outKey) var upK:Boolean = false; var downK:Boolean = false; var leftK:Boolean = false; var rightK:Boolean = false; var speed = 5; function onKey(e:KeyboardEvent) { if (e.keyCode == 38) { upK=true; } if (e.keyCode == 39) { rightK = true; } if (e.keyCode == 40) { downK=true; } if (e.keyCode == 37) { leftK=true; } } function outKey(e:KeyboardEvent) { if (e.keyCode == 38) { upK=false; } if (e.keyCode == 39) { rightK = false; } if (e.keyCode == 40) { downK=false; } if (e.keyCode == 37) { leftK=false; } } addEventListener(Event.ENTER_FRAME, anim) function anim(e:Event):void { if(upK) { Dude.gotoAndStop(3); Dude.y -=speed; } else if(rightK) { Dude.gotoAndStop(1); Dude.x +=speed; } else if(downK) { Dude.gotoAndStop(4); Dude.y +=speed; } else if(leftK) { Dude.gotoAndStop(2); Dude.x -=speed; } else { Dude.gotoAndStop(4); } } |
|
|||||
Регистрация: Nov 2010
Сообщений: 434
|
события вешать на каждую кнопку MOUSE_DOWN, MOUSE_UP
|
|
|||||
Регистрация: Sep 2011
Сообщений: 7
|
Когда пишу
Человечек делает по одному шагу при каждом нажатии |
|
|||||
при нажатии на кнопку в обработчике добавляешь слушатель ентерфрейма
а когда кнопка отпускается отписываешься
как вариант
__________________
мира и гармонии |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
private function right1(event:MouseEvent):void { _pers.addEventListener(Event.ENTER_FRAME, walkRight); } private function walkRight(event:Event):void { _pers.x += 1; }
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Sep 2011
Сообщений: 7
|
Не понимаю. Кто-нибудь может написать пример. Есть шарик с именем "ball". Есть кнопка. Как сделать так, что-бы шарик перемещался вправо, пока зажата эта кнопка.
|
|
|||||
right.addEventListener(MouseEvent.MOUSE_DOWN, onRightDown); right.addEventListener(MouseEvent.MOUSE_UP, onRightUp); private function onRightDown(event:MouseEvent):void { _goRight = true; addEventListener(Event.ENTER_FRAME, moveBall); } private function onRightUp(event:MouseEvent):void { _goRight = false; removeEventListener(Event.ENTER_FRAME, moveBall); } private function moveBall(event:Event):void { if(_goRight) { _ball.x += _speed; } }
__________________
мира и гармонии Последний раз редактировалось 3p.station; 24.09.2011 в 16:38. |
|
|||||
Регистрация: Nov 2010
Сообщений: 434
|
buttonRight.addEventListener(MOUSE_DOWN, mouseDown1); buttonRight.addEventListener(MOUSE_UP, mouseUp1); private function mouseDown1(e: MouseEvent):void { ball.addEventListener(Event.ENTER_FRAME, toRight); } private function mouseUp1(e: MouseEvent):void { ball.removeEventListener(Event.ENTER_FRAME, toRight); } private function toRight(e: Event):void { ball.x ++; } если direction == 'Up' то двигать ball вверх, если direction == Down двигать вниз, если direction == '' то не двигать и т.д. затем написать класс к 4 кнопкам, которые выдают значение при нажатии на одну из них (Up, Down, Right, Left) затем передовать значение в класс ball. Так мне кажется будет удобнее Последний раз редактировалось ЗлОй ПрОграММер; 24.09.2011 в 16:45. |
|
|||||
Регистрация: Sep 2011
Сообщений: 7
|
Наверно я совсем тупой. Ниче не получается) Кнопка должна быть MovieClip или Button?
|
Часовой пояс GMT +4, время: 23:07. |
|
« Предыдущая тема | Следующая тема » |
|
|