Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 2клавиши 
V
    Опции темы
DEMOVERSION
Дата 5.4.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



как проверять состояние одновременно нажатых кнопок, например DOWN_PRESSED&RIGHT_PRESSED

Код

Код: 
int k = getKeyStates(); 
 switch (k) { 
            case FIRE_PRESSED: { 
                // 
                break; 
            } 
            case RIGHT_PRESSED:{ 
                car.addSpeed(); 
                break; 
            } 
            case LEFT_PRESSED:{ 
                car.removeSpeed(); 
                break; 
            } 
            case UP_PRESSED:{ 
                car.removePos(); 
                break; 
            } 
            case DOWN_PRESSED:{ 
                car.addPos(); 
                break; 
            } 
            case DOWN_PRESSED&RIGHT_PRESSED:{ 
                        } 
        } 

PM MAIL   Вверх
redrick
Дата 5.4.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 1
Всего: 5



или я тебя неправильно понял или вот читай
Код

getKeyStates

public int getKeyStates()

    Gets the states of the physical game keys. Each bit in the returned integer represents a specific key on the device. A key's bit will be 1 if the key is currently down or has been pressed at least once since the last time this method was called. The bit will be 0 if the key is currently up and has not been pressed at all since the last time this method was called. This latching behavior ensures that a rapid key press and release will always be caught by the game loop, regardless of how slowly the loop runs.

    For example:

          // Get the key state and store it
          int keyState = getKeyStates();
          if ((keyState & LEFT_KEY) != 0) {
              positionX--;
          }
          else if ((keyState & RIGHT_KEY) != 0) {
              positionX++;
          }

     

    Calling this method has the side effect of clearing any latched state. Another call to getKeyStates immediately after a prior call will therefore report the system's best idea of the current state of the keys, the latched bits having been cleared by the first call.

    Some devices may not be able to query the keypad hardware directly and therefore, this method may be implemented by monitoring key press and release events instead. Thus the state reported by getKeyStates might lag the actual state of the physical keys since the timeliness of the key information is be subject to the capabilities of each device. Also, some devices may be incapable of detecting simultaneous presses of multiple keys.

    This method returns 0 unless the GameCanvas is currently visible as reported by Displayable.isShown(). Upon becoming visible, a GameCanvas will initially indicate that all keys are unpressed (0); if a key is held down while the GameCanvas is being shown, the key must be first released and then pressed in order for the key press to be reported by the GameCanvas.

    Returns:
        An integer containing the key state information (one bit per key), or 0 if the GameCanvas is not currently shown.
    See Also:
        UP_PRESSED, DOWN_PRESSED, LEFT_PRESSED, RIGHT_PRESSED, FIRE_PRESSED, GAME_A_PRESSED, GAME_B_PRESSED, GAME_C_PRESSED, GAME_D_PRESSED




итого условие будет
Код

if(((k & DOWN_PRESSED) != 0) && ((k &RIGHT_PRESSED) != 0)) {
    // нажались одновременно
}


Это сообщение отредактировал(а) redrick - 5.4.2006, 18:29


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
DEMOVERSION
Дата 7.4.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



Спасибо!
PM MAIL   Вверх
02077461
Дата 18.4.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



А в каом это объекте?..
 
PM   Вверх
redrick
Дата 18.4.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 1
Всего: 5



конкретно это касалось GameCanvas вроде бы 


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
02077461
Дата 18.4.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



А для Canvas как реализовать?.. 
PM   Вверх
Dancer
Дата 18.4.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



getKeyPressed() и getKeyReleased() есть такие методы в канве.

ну, заведи массив какой нить (можешь вообще переменную типа int использовать как бинарное представление числа и будет тебе состояние 32 кнопок)
в зависимости от того что произошло (нажал или отпустил, меняешь состояние массива (переменной). В зависимости от того каков массив (или какое значение в твоей переменной) определеляется дальнейшее действие.

Алгоритм понятен? 


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.