|
|
|||||
Мгновенная реакция объекта.
Подскажите как сделать мгновенный отклик обьекта, к примеру:
пусть то будет сдвиг в лево на нажатие клавиши "Left". Последний раз редактировалось stweet; 09.09.2010 в 15:47. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Event::updateAfterEvent() ?
Увеличить фреймрейт? =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
addEventListener(KeyboardEvent.KEY_DOWN, startMove); addEventListener(KeyboardEvent.KEY_UP, stopMove); function startMove (e:KeyboardEvent):void { addEventListener(Event.ENTER_FRAME, move); } function stopMove (e:KeyboardEvent):void { removeEventListener(Event.ENTER_FRAME, move); } //UPD: function move (e:Event):void { object.x --; }
__________________
low + Последний раз редактировалось Jewelz; 09.09.2010 в 16:32. |
|
|||||
Jewelz спс.
Добавлено через 8 минут Но, признаться работает не стабильно =( Есть ещё какие нибуд варианты? Добавлено через 13 минут Можно ли сделать через "Timer"? Последний раз редактировалось stweet; 09.09.2010 в 19:45. |
|
|||||
Регистрация: Nov 2007
Сообщений: 1,723
|
Что значит не стабильно? Через EnterFrame все нормально работает
|
|
|||||
Суть в том что когда жмём влево а после в право и с ново влево, объект на мгновение замирает.
|
|
|||||
Регистрация: Feb 2009
Сообщений: 1,195
|
Много раз обсуждалось - по нажатию клавиши ставим флаг, по отпусканию сбрасываем, в enterframe изменяем координаты, если флаг установлен.
|
|
|||||
Вот с флагами я как раз не знаком =( Если не трудно, можно по подробнее?
|
|
|||||
Регистрация: Feb 2009
Сообщений: 1,195
|
Флаг - просто переменная, которая будет принимать одно из двух значений (кнопка нажата, кнопка отжата). Логично использовать для неё тип Boolean.
|
|
|||||
Цитата:
Добавлено через 47 часов 16 минут Суть проблемы такова, при активном использование (типа, серия ударов из мортал комбат ультимэйт на сеге) клавиши не отвечают, либо путаются в назначении. Нажимаю: влево, вниз, вверх поочерёдно но быстро, выполняется действие наискосок вниз, влево. Подскажите пожалуйста, есть ли более эффективная возможность манипулировать объектом или подскажите как улучшить этот код. Заранее, ОЧЕНЬ БУДУ БЛАГОДАРЕН. Привожу код который использую. Плюс, ещё хочу добавить "space", в этом коде его нет так как с ним ещё хуже. package { import flash.display.*; import flash.events.*; import flash.ui.*; public class Main extends Sprite { private var upPress:Boolean; private var leftPress:Boolean; private var rightPress:Boolean; private var downPress:Boolean; private var spacePress:Boolean; public function Main() { stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDawnListener, false, 0, false); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUpListener, false, 0, false); } private function KeyDawnListener (e:KeyboardEvent):void { if (e.keyCode == Keyboard.UP) { upPress = true; } else if (e.keyCode == Keyboard.LEFT) { leftPress = true; } else if (e.keyCode == Keyboard.RIGHT) { rightPress = true; } else if (e.keyCode == Keyboard.DOWN) { downPress = true; } else if (e.keyCode == Keyboard.SPACE) { spacePress = true; trace("spacePress"); } if (upPress&&leftPress) { trace("upPress leftPress"); } else if (upPress&&rightPress) { trace("upPress rightPress"); } else if (downPress&&leftPress) { trace("downPress leftPress"); } else if (downPress&&rightPress) { trace("downPress rightPress"); } else if (upPress) { trace("upPress"); } else if (rightPress) { trace("rightPress"); } else if (leftPress) { trace("leftPress"); } else if (downPress) { trace("downPress"); } } private function KeyUpListener(e:KeyboardEvent):void { if (e.keyCode == Keyboard.UP) { upPress = false; } else if (e.keyCode == Keyboard.LEFT) { leftPress = false; } else if (e.keyCode == Keyboard.RIGHT) { rightPress = false; } else if (e.keyCode == Keyboard.DOWN) { downPress = false; } else if (e.keyCode == Keyboard.SPACE) { spacePress = false; } } } } |
Часовой пояс GMT +4, время: 17:05. |
|
« Предыдущая тема | Следующая тема » |
|
|