samedi 2 juillet 2016

Why won't my character move when I add my key listener

So I've written a base to a short game, here is the panel class that is added to my JFrame:

package io.ryanshah;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

import io.ryanshah.entity.player.EntityPlayer;
import io.ryanshah.util.TextureResource;

public class GamePanel extends JPanel implements KeyListener
{
    protected JFrame parentWindow;
    protected EntityPlayer player;

    private TextureResource playerImg;
    private TextureResource platformBg = new TextureResource("res/platform.png");

    private int playerX, playerY;

    public GamePanel(GameWindow parentWindow) {
        super();

        addKeyListener(this);
        setFocusable(true);

        this.parentWindow = parentWindow;
        player = parentWindow.mainPlayer;

        playerImg = player.getEntityTexture();

        playerX = (parentWindow.getWidth() / 2) - (player.getEntityTexture().getImage().getWidth() / 2);
        playerY = parentWindow.getHeight() - 150 - player.getEntityTexture().getImage().getHeight();
    }

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_A) {
            playerX--;
        }
        if(e.getKeyCode() == KeyEvent.VK_D) {
            playerX++;
        }
        if(e.getKeyCode() == KeyEvent.VK_SPACE
                || e.getKeyCode() == KeyEvent.VK_W) {
            playerY++;
        }
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.drawImage(platformBg.getImage(), 0, parentWindow.getHeight() - 150, null);
        g.drawImage(playerImg.getImage(), playerX, playerY, null);
    }

    public void keyTyped(KeyEvent e) {
    }
    public void keyReleased(KeyEvent e) {
    }
}

I've done KeyListener's like this before, so I don't know what the issue is here! Hope someone can shed some light as to why it isn't working :)

EDIT: I use setContentPane() to add my panel to the frame, but using add() doesn't work either.

Thanks.

Aucun commentaire:

Enregistrer un commentaire