Mover imagem na diagonal com key listener

2 respostas
L

Estou tentando fazer uma imagem mover para a diagonal com o key listener porém não consigo pegar as duas teclas pressionadas e sim apenas a primeira pressionada. Alguém poderia me ajudar? obrigado desde já!

Já achei a resposta! não precisa mais responder

2 Respostas

staroski

Poderia postar a solução pra ajudar quem tiver a mesma dúvida. :wink:

L

Quando eu pressiono o botão eu adiciono o valor verdadeiro para uma variável e na minha outra classe enquanto algo for verdadeiro ele vai executar um código, dai quando eu não estou mais pressionando o valor volta a ser false, assim quando eu clico cima e direita os dois vão ficar true e vai executar o código de cima e o código de direita.

JFrame Movimentar

this.addKeyListener(new KeyListener() {

@Override
        public void keyPressed(KeyEvent e) {
            personagem1.setLocation(personagem.getLocation());
            MovimentarClasse mvc = new MovimentarClasse();
            if(e.getKeyCode()==37){
                esquerda = true;
            }
            if(e.getKeyCode()==38){
                cima = true;
            }
            if(e.getKeyCode()==39){
                direita = true;
            }
            if(e.getKeyCode()==40){
                baixo = true;
            }
            mvc.Movimento();
            

        }
        @Override
        public void keyTyped(KeyEvent e) {
            
        }
        @Override
        public void keyReleased(KeyEvent e) {
            if(e.getKeyCode()==37){
                esquerda = false;
            }
            if(e.getKeyCode()==38){
                cima = false;
            }
            if(e.getKeyCode()==39){
                direita = false;
            }
            if(e.getKeyCode()==40){
                baixo = false;
            }

            

        }

    });

public void Movimento(){

if (Movimentar.esquerda == true) {

int xL = Movimentar.personagem.getLocation().x;

int yL = Movimentar.personagem.getLocation().y;

if (xL > 27) {

Movimentar.personagem.setLocation(xL - Movimentar.movimenta, yL);

Movimentar.vidPerDesk.setLocation(xL + 8, yL - 20);

Movimentar.nomeP.setLocation(xL - 23, yL - 40);

}

}

if (Movimentar.cima == true) {

int xL = Movimentar.personagem.getLocation().x;

int yL = Movimentar.personagem.getLocation().y;

if (yL > 38) {

Movimentar.personagem.setLocation(xL, yL - Movimentar.movimenta);

Movimentar.vidPerDesk.setLocation(xL + 11, yL - 23);

Movimentar.nomeP.setLocation(xL - 20, yL - 43);

}

}

if (Movimentar.direita == true) {

int xL = Movimentar.personagem.getLocation().x;

int yL = Movimentar.personagem.getLocation().y;

if (xL < 1227) {

Movimentar.personagem.setLocation(xL + Movimentar.movimenta, yL);

Movimentar.vidPerDesk.setLocation(xL + 11, yL - 20);

Movimentar.nomeP.setLocation(xL - 20, yL - 40);

}

}

if (Movimentar.baixo == true) {

int xL = Movimentar.personagem.getLocation().x;

int yL = Movimentar.personagem.getLocation().y;

if (yL < 316) {

Movimentar.personagem.setLocation(xL, yL + Movimentar.movimenta);

Movimentar.vidPerDesk.setLocation(xL + 10, yL - 17);

Movimentar.nomeP.setLocation(xL - 20, yL - 37);

}

}

}

}
Criado 25 de novembro de 2016
Ultima resposta 26 de nov. de 2016
Respostas 2
Participantes 2