|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Проблема с обработкой или просто глюк? (перехват события)
Здравствуйте уважаемые flasher'ы...
Натолкнулся на такую проблему... пишется игра (просто чтобы руку набить) типа pacman'а... так вот при перехвате события нажатия на стрелки если в обработчике прописать trace("!") то этих знаков при коротком одном нажатии выводится несколько... Все бы оно ничего, да вот если нажать одновременно на две стрелки, происходит нечто невообразимое... В конкретном случае (упрощенном) function myOnKeyDown() { if (Key.isDown(Key.LEFT)) { _root.player_mc._x-=20; } if (Key.isDown(Key.RIGHT)) { _root.player_mc._x+=20; } if (Key.isDown(Key.UP)) { _root.player_mc._y-=20; } if (Key.isDown(Key.DOWN)) { _root.player_mc._y+=20; } } Собственно вопрос: ПОЧЕМУ?
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
да вроде все нормально при коротком нажатии. Просто корректно обрабатывайте нужную вам ситуацию, если необходимо - ставьте флаг - такая то клавиша нажата и флаг false - делаем действие, флаг true, отжата - false.
|
|
|||||
вы не поняли... у меня проблема не с перехватом события, а с тем, что свойства _x и _y получают приращения неправильные... (а вернее слишком большие) и зря переместили тему, я не новичек, и эта проблема мне кажется актуальной и для проф
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Клавиатура у тебя глючит
Или у тебя этот обработчик подписан несколько раз. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Key.isDown(Key.LEFT) и Key.isDown(Key.RIGHT) взаимоисключающие. Должна работать, толька та клавиша, которая была нажата последней. А у вас Key.RIGHT всегда нейтролизует действие Key.LEFT при одновременном нажатии.
|
|
|||||
iNils, это понятно, но если проблема в этом, как это исправить? с помощью флагов не работает... кста, наткнулся на еще одну проблему... из
- не вызываются сторонние функции... например : не работает...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
import mx.utils.Delegate var keyListener:Object = new Object(); keyListener.onKeyDown = Delegate.create(this,myOnKeyDown); keyListener.onKeyUp = Delegate.create(this,myOnKeyUp); Key.addListener(keyListener); function myOnKeyDown(){ if( Key.isDown(Key.LEFT) )testIt(); } function myOnKeyUp(){} function testIt(){ trace("test"); } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
vic_, извращенец?
Только если, конечно, обозвать функцию по-другому не надо… Последний раз редактировалось etc; 10.01.2007 в 17:17. |
|
|||||
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
упс, пардон, не подумал
|
Часовой пояс GMT +4, время: 17:51. |
|
« Предыдущая тема | Следующая тема » |
|
|