![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте уважаемые 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,787
|
Клавиатура у тебя глючит
![]() Или у тебя этот обработчик подписан несколько раз. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 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,787
|
vic_, извращенец?
![]() Только если, конечно, обозвать функцию по-другому не надо… Последний раз редактировалось etc; 10.01.2007 в 17:17. |
|
|||||
|
Регистрация: Sep 2006
Адрес: Zaporozhye, Ukraine
Сообщений: 141
|
упс, пардон, не подумал
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|