|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Модрон-ветеринар
|
См. пример (тестируйте исходник в среде разработки, там trace есть)
function doIt () { //действие trace('нажато!'); this.gotoAndStop(1); } btn.onPress = function () { //нажатие кнопки сцены this.gotoAndStop(2); } btn.onRelease = doIt; //отпускание кнопки сцены var keyListener_obj:Object = new Object(); keyListener_obj.onKeyDown = function() { if (Key.getCode() == Key.UP && !wasPressed) { //ловит нажатие UP btn.gotoAndStop(2); wasPressed = true ; } }; keyListener_obj.onKeyUp = function() { if (Key.getCode() == Key.UP) { //ловит отпускание UP doIt (); btn.gotoAndStop(1); wasPressed = false ; } }; Key.addListener(keyListener_obj); Последний раз редактировалось mooncar; 02.12.2009 в 00:42. |
|
|||||
Регистрация: Sep 2008
Сообщений: 158
|
Вот мой код и исходник.
Если нажимать мышкой то увеличение координат и текст увеличивается на 1. Если клавиатурой то в прогрессии speed=0; hop=0; onEnterFrame=function() { drawing_mc.lineTo(bk._x, bk._y); var keyListener_obj:Object = new Object(); keyListener_obj.onKeyDown = function() { if (Key.getCode() == Key.UP && !wasPressed) { //ловит нажатие UP wasPressed = true ; } }; keyListener_obj.onKeyUp = function() { if (Key.getCode() == Key.UP) { //ловит отпускание UP doit1 (); wasPressed = false ; } }; Key.addListener(keyListener_obj); vperod.onRelease = doit1; function doit1 () { txt.text +="Вперёд" + "\n"; speed =20; hop = hop + 1; korx=hop; } bk._x+=speed*(Math.round(Math.sin(0.0175 * bk._rotation))); //увеличиваем координаты по _х в соответствии с углом поворота и скоростью; 0.0175 - это Пи/180 (перевод из градусной меры в радианную) bk._y+=speed*(Math.round(-Math.cos(0.0175 * bk._rotation))); //увеличиваем координаты по _y в соответствии с углом поворота и скоростью speed*=0; } |
|
|||||
Модрон-ветеринар
|
Ну зачем вы все запихали в onEnterFrame, что за дикий код?
onEnterFrame выполняет все, что внутри нее с частотой, равной частоте кадров. Разве есть необходимость с огромной скоростью непрерывно пересоздавать слушателей и переназначать функции onRelease, onKeyDown и onKeyUp, doit1? Вытаскивайте все из onEnterFrame, оставляйте там только то, что реально нужно выполнять непрерывно, а все прочие функции выносите из нее. Чего вы вообще пытаетесь добиться? Последний раз редактировалось mooncar; 02.12.2009 в 13:46. |
|
|||||
Регистрация: Nov 2009
Сообщений: 40
|
Объясните пожалуйста зачем нужен слушатель keyListener_obj? какова его функция ? Ведь без него тоже будет работать
|
|
|||||
Без слушателя никуда! Но, вот лишний объект убрать можно - мувиклип слушает клаву и мышь изначально, как объект предопределенного класса.
function doIt() { trace('нажато!'); this.gotoAndStop(1); } btn.onPress = function() { this.gotoAndStop(2); }; btn.onRelease = doIt; btn.onKeyDown = function() { if (Key.getCode() == Key.UP && !wasPressed) { btn.gotoAndStop(2); wasPressed = true; } }; btn.onKeyUp = function() { if (Key.getCode() == Key.UP) { doIt(); btn.gotoAndStop(1); wasPressed = false; } }; Key.addListener(btn); |
|
|||||
Регистрация: Sep 2008
Сообщений: 158
|
спасибо mooncar!
|
|
|||||
Модрон-ветеринар
|
Получилось? Пожалуйста...
|
|
|||||
Регистрация: Sep 2008
Сообщений: 158
|
Получилось. Но на втором кадре нажатие клавиш сохраняется.
А за решение чтоб не сохранялись спасибо Жень Шень! |
|
|||||
Banned
[+6 18.05.10]
[+6 17.08.10] Регистрация: Apr 2010
Сообщений: 14
|
А как если действие при нажатии кнопки "1" или "2", "3" итд
|
Часовой пояс GMT +4, время: 21:10. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|