Apertar a tecla só em um certo lugar

1 resposta
java
N

Estou criando um jogo simples pelo java,uma cópia do supermariobros 3 para eu testar meu conhecimento em java,eu usei uma ImageIcon para fazer a tela inicial,que é um gif da tela inicial do supermariobros3,se eu apertar z,quero que a tela mude para outra,até ai tudo bem,eu consegui,mas se eu apertar z na outra tela,mesmo que não apareça,uma tela duplicada aparece,pois é uma imageicon e não um JPanel,então as coisas são básicas.Mas quero que o z só funcione uma vez,quando clicado quero que não faça nenhum comando depois,os métodos do keyListener serão úteis para isso?

1 Resposta

TerraSkilll

O que é essa outra tela? É outro JFrame? Ou você só está trocando a imagem/gif?

O jeito mais simples é ter uma variável booleana na sua classe e, quando z for pressionado, vocẽ verifica essa variável antes de executar o comando, e altera o valor da variável pra não executar uma segunda vez. Algo como:

classe ClasseQualquer{
  private boolean jaExecutouAntes = false;

  public void keyListenerqualquer(){
    if (teclaPressionada.equals("z")){
    if (!jaExecutouAntes){
      trocartela();// método que troca a tela
      jaExecutouAntes = true; // da próxima vez, a variável estará true e não trocará a tela
    }
  }
}

Obviamente, o código acima não funciona; é só pra exemplificar a ideia.

PS: não faz parte da pergunta mas, se você quer criar um jogo interativo, funcional e com animações em tempo real, terá muita dificuldade de obter isso usando componentes visuais como ImageIcon. Jogos usam técnicas diferentes da programação de interfaces convencional (Swing, AWT).

Abraço.

Criado 23 de fevereiro de 2018
Ultima resposta 23 de fev. de 2018
Respostas 1
Participantes 2