forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программирование (http://forum.boolean.name/forumdisplay.php?f=54)
-   -   GameCanvas и getKeyStates() (http://forum.boolean.name/showthread.php?t=7480)

Serg_Bloim 21.12.2008 15:29

GameCanvas и getKeyStates()
 
Что-то я не понимаю, getKeyStates() не хочет реагировать на нажатие клавиш 2, 4, 5, 6, 8, софт клавиш, *, #, 0. Точнее функция возвращает ноль. Как в GameCanvas обрабатывать эти клавиши?:dontknow:

aNNiMON 21.12.2008 17:20

Ответ: GameCanvas и getKeyStates()
 
Клавиши 2, 4, 5, 6, 8 это UP_PRESSED, LEFT_PRESSED, FIRE_PRESSED, RIGHT_PRESSED и DOWN_PRESSED соответственно.
Вот и пиши:
Код:

if ((getKeyStates() & LEFT_PRESSED) != 0) {
          // Обработчик нажатия влево
      }
      else if ((getKeyStates() & RIGHT_PRESSED) != 0) {
          // Обработчик нажатия вправо
      }

* и # на некоторых телефонах соответствуют GAME_A_PRESSED и GAME_B_PRESSED, на остальных же телефонах они не соответствуют никаким параметрам.

Piligrim 21.12.2008 19:40

Ответ: GameCanvas и getKeyStates()
 
Еще бывает такое соответствие:
GAME_A - 1
GAME_B - 3
GAME_C - 7
GAME_D - 9

Serg_Bloim 21.12.2008 21:22

Ответ: GameCanvas и getKeyStates()
 
тоесть выходит, что джойстик и "2,4,5,6,8" - это одни и те же кнопки и раздельно их обрабатывать неполучится? Как-то это грустно(((
А вот в Canvas можно обрабатывать все кнопки отдельно, может можно использовать Canvas'скую систему реакций на нажатия совместно с GameCanvas'ской графической системой? Только что-то я себе это слабо представляю, ведь, чтобы работал Canvas'ский обработчик, надо Canvas задать как текущий экран. Тогда GameCanvas не сможет рисоваться на экран. А может... рисовать GameCanvas не на экран, а в Image, а уже этот Image рисовать в Canvas... Но это не есть гуд. И это скорее всего извращение. А как по-другому пользуясь графическими возможностями GameCanvas не ущемлять себя в работе с клавиатурой? Ведь это сколько полезных кнопок пропадает.

Serg_Bloim 22.12.2008 01:12

Ответ: GameCanvas и getKeyStates()
 
Ага!
Вроде что-то нашел. В конструкторе класса GameCanvas есть булев параметр, который по всей видимости и определяет способ слежения за клавиатурой: старый канвавский или новый, геймканвавский. Только вот нигде нормально почитать про это не получилось(((
Может кто знает как этим пользоваться, обьясните или ссылочкой для "почитать" поделитесь.

Serg_Bloim 22.12.2008 01:31

Ответ: GameCanvas и getKeyStates()
 
Виват, товарищи! Я, кажется разобрался. Интернет - это, конечно, великая вещь, и, даже, говорят там все есть. Но, блин так просто не найти там того, что нужно((( Пришлось включить мозг и немного подумать. Ведь ГеймКанвас - наследник Канваса, переопределяем метод КейПрессед и да будет счастье:)

Serg_Bloim 25.12.2008 18:23

Ответ: GameCanvas и getKeyStates()
 
Сделал простую програмку, которая выводит код нажатой клавиши на экран телефона и на втором обследуемом телефоне(Nokia N73) столкнулся с тем, что не могу получить код софт-клавиш.
Получается, что нокия просто не оповещает о нажатии этих кнопок. Зато одна из черырех дополнительных кнопок подала голос( а именно карандашик, у него код -50)
кто знает, что произошло? Точнее почему не произошла реакция на нажатие, может у нокий нет возможности программить софт-кнопки или есть какие-то особенности?
З.Ы. у меня лично никогда нокии не было, я их не перевариваю немного


Часовой пояс GMT +4, время: 20:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot