Man I spent hours scratching my head on this one. I have never had a problem with input before but I am kinda changing things up a little. Man I can’t wait to stop letting myself get these irritating errors.
This is where I added it to the canvas.
public Main()
{
initGame();
JFrame frame = new JFrame(gameMain.getName());
frame.setIconImage(gameMain.setLogo());
Canvas canvas = new Canvas();
canvas.setPreferredSize(gameMain.getScreenSize());
InputListener input = new InputListener();
canvas.addKeyListener(input);
canvas.addMouseListener(input);
frame.add(canvas);
frame.pack();
frame.setVisible(true);
canvas.setVisible(true);
canvas.requestFocus();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.createBufferStrategy(2);
buffer = canvas.getBufferStrategy();
}
This is the simple code to move in my player class and I did import the inputlistener.
public void input()
{
InputListener input = new InputListener();
if(input.getKey() == "w")
dir(0,-1);
if(input.getKey() == "a")
dir(0,1);
if(input.getKey() == "s")
dir(-1,0);
if(input.getKey() == "d")
dir(1,0);
}
Here is the InputListener class.
package com.base.engine;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class InputListener implements KeyListener, MouseListener, MouseMotionListener
{
Dimension mousePos;
boolean clicked = false;
boolean keyDown;
boolean keyUp;
String key;
String tempKey;
public Dimension mouseLoc()
{
return mousePos;
}
public void mouseMoved(MouseEvent e)
{
mousePos = new Dimension(e.getX(), e.getY());
}
public void mousePressed(MouseEvent e)
{
clicked = true;
}
public void mouseReleased(MouseEvent e)
{
clicked = false;
}
public void keyPressed(KeyEvent e)
{
keys(e.getKeyCode());
keyDown = true;
}
public void keyReleased(KeyEvent e)
{
keyDown = false;
}
public void keyTyped(KeyEvent e)
{
}
public void keys(int i)
{
if(i == KeyEvent.VK_A)
key = "a";
if(i == KeyEvent.VK_B)
key = "b";
if(i == KeyEvent.VK_C)
key = "c";
if(i == KeyEvent.VK_D)
key = "d";
if(i == KeyEvent.VK_E)
key = "e";
if(i == KeyEvent.VK_F)
key = "f";
if(i == KeyEvent.VK_G)
key = "g";
if(i == KeyEvent.VK_H)
key = "h";
if(i == KeyEvent.VK_I)
key = "i";
if(i == KeyEvent.VK_J)
key = "j";
if(i == KeyEvent.VK_K)
key = "k";
if(i == KeyEvent.VK_L)
key = "l";
if(i == KeyEvent.VK_M)
key = "m";
if(i == KeyEvent.VK_N)
key = "n";
if(i == KeyEvent.VK_O)
key = "o";
if(i == KeyEvent.VK_P)
key = "p";
if(i == KeyEvent.VK_Q)
key = "q";
if(i == KeyEvent.VK_R)
key = "r";
if(i == KeyEvent.VK_S)
key = "s";
if(i == KeyEvent.VK_T)
key = "t";
if(i == KeyEvent.VK_U)
key = "u";
if(i == KeyEvent.VK_V)
key = "v";
if(i == KeyEvent.VK_W)
key = "w";
if(i == KeyEvent.VK_X)
key = "x";
if(i == KeyEvent.VK_Y)
key = "y";
if(i == KeyEvent.VK_Z)
key = "z";
}
public String getKey()
{
return key;
}
public boolean getKeyPress()
{
return keyDown;
}
@Override
public void mouseDragged(MouseEvent e) {}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}