Pessoal, pesquisei MUITO (e não foi só um dia não), mas não encontrei uma solução ideal para o seguinte problema.
Tenho minhas telas em Canvas, mas para mapear a ação do usuário com as teclas, o keyCode do keyPressed muda de aparelho para aparelho.
Já tentei pegar o cógigo da tecla, nome da tecla. mas nada me resolve, então fui atrás de como o MIDP faz isso, e vi que ele usa a constante Display.KEYPRESSED_UP, algo assim, mas ela não está disponível quando tento acessá-la. Então, qual seria a solução que o pessoal que já implementou bibliotecas em Canvas (já vi alguns cometando que fizeram bibliotecas em Canvas) usou para driblar essa diferença entre aparelhos?
Olha aqui a solucao foi apresentar uma tela para “calibrar” os botoes na primeira vez que o usuario acessa a app.
j0nny
Então essas teclas seriam armazenadas no aparelho?
Foi a única solução?
P
PoneyMan
Você já tentou usar o GameCanvas ?
j0nny
Não, mas ele resolveria o problema?
P
PoneyMan
Me responda você ! Detesto postar sem ser a resposta definitiva, mas depois do seu “choro”, imaginei que vc não tivesse tentado tudo. Eu estava certo.
GameCanvas, FullCanvas (Nokia) e outros tipos de Canvas são objetos que muitos se esquecem que estão aí para ajudar o desenvolvedor.
j0nny
boone:
Me responda você ! Detesto postar sem ser a resposta definitiva, mas depois do seu “choro”, imaginei que vc não tivesse tentado tudo. Eu estava certo.
GameCanvas, FullCanvas (Nokia) e outros tipos de Canvas são objetos que muitos se esquecem que estão aí para ajudar o desenvolvedor.
Estarei testando esse fds e posto o resultado, de qualquer forma, obrigado pelas dicas…
E além disso, olhando a classe GameCanvas rapidamente, vi o getKeyStates() e me surgiu uma dúvida:
posso usar o keyPressed() normalmente?
Estarei testando esse fds e posto o resultado, de qualquer forma, obrigado pelas dicas…
E além disso, olhando a classe GameCanvas rapidamente, vi o getKeyStates() e me surgiu uma dúvida:
posso usar o keyPressed() normalmente?
Aí teria que passar false no super(), não seria melhor usar um loop para dar o poll nas teclas?
j0nny
Will_HRock:
Estarei testando esse fds e posto o resultado, de qualquer forma, obrigado pelas dicas…
E além disso, olhando a classe GameCanvas rapidamente, vi o getKeyStates() e me surgiu uma dúvida:
posso usar o keyPressed() normalmente?
Aí teria que passar false no super(), não seria melhor usar um loop para dar o poll nas teclas?
Será que um while(true) verificando as teclas não seria mais custoso?
aleantonello
O GameCanvas funciona quase da mesma forma que o Canvas. Você não precisa de “while (true)” ou outro mecanismo. Se esta construindo uma aplicação normal (que não seja um jogo) pode confiar nos eventos keyPressed(), keyReleased() etc. O método getGameAction() também funciona bem para as teclas direcionais e SELECT. Porém você precisa tomar cuidado com os SOFTKEYS pois em alguns aparelhos estas teclas possuem códigos negativos e ao passá-las para getGameAction() uma Exception é gerada (Samsung). Isso significa também que em alguns aparelhos você não tem como saber se é SOFTKEY esquerdo ou SOFTKEY direito (por causa do exception). Então não há outra forma senão a velha “tentativa e erro”. Felizmente a maioria dos aparelhos usa o mesmo código e você pode então assumir que valores como -6 ou -21 são SOFTKEY esquerdo, -7 ou -22 SOFTKEY direito e -8 a tecla CLEAR.
P
PoneyMan
Mais mastigado do que isto impossível né…
Nossa aleantonello, vc vai pro céu. Eu já não tenho mais esta paciência toda para explicar assim não…
j0nny
boone:
Mais mastigado do que isto impossível né…
Nossa aleantonello, vc vai pro céu. Eu já não tenho mais esta paciência toda para explicar assim não…
E quem disse que quero mastigado?
Queria saber das experiências de vcs, agora se não quiser ajudar e acha que quero mastigado, nem perca seu tempo postando…
P
PoneyMan
Eu disse que o aleantonello entrou num nível de detalhe que eu não entraria, até porquê minha indicação do link já era o suficiente, basta usá-la como ponto de partida.
Por isto que quando vi que ele postou mastigado, faleu que ELE iria pro céu, pois este “raciocínio” que ele teve, espera-se de quem leu o artigo do link e fez mais buscas sobre o GameCanvas depois.