Note that there are some explanatory texts on larger screens.

plurals
  1. POKeyListener and MouseListener not working
    primarykey
    data
    text
    <p>Im working on making a simple Java game and had the great idea of separating my input handling to a separate class then the main game. I am having trouble getting my InputHandler class to actually receive input. </p> <p>Main Game Class (DrawPanel.java)</p> <pre><code>package com.eriksaulnier.DesignedToFail; import java.awt.*; import java.awt.image.*; import com.eriksaulnier.DesignedToFail.InputHandler; import javax.swing.*; public class DrawPanel extends JPanel { private static final long serialVersionUID = 1L; BufferedImage buffer; InputHandler inputHandler; Entity player; Entity enemy; public boolean spawnBullet = false; public DrawPanel () { setIgnoreRepaint(true); setVisible(true); setFocusable(true); addKeyListener(inputHandler); addMouseListener(inputHandler); new InputHandler(); } public void initialize() { buffer = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB); player = new Entity(370, 270); enemy = new Entity(100, 100); } public void update() { player.move(); } public void checkCollisions() { if (player.getBounds().intersects(enemy.getBounds())) player.collision = true; else player.collision = false; } public void drawBuffer() { Graphics2D b = buffer.createGraphics(); b.setColor(Color.white); b.fillRect(0, 0, 800, 600); if (player.collision == false) { b.setColor(Color.blue); b.fillRect(player.getX(), player.getY(), player.getWidth(), player.getHeight()); b.setColor(Color.red); b.fillRect(enemy.getX(), enemy.getY(), enemy.getWidth(), enemy.getHeight()); b.dispose(); } else { b.setColor(Color.black); b.drawString("Collision!", 350, 300); b.dispose(); } } public void drawScreen() { Graphics2D g = (Graphics2D)this.getGraphics(); g.drawImage(buffer, 0, 0, this); Toolkit.getDefaultToolkit().sync(); g.dispose(); } public void startGame() { initialize(); while(true) { try { update(); checkCollisions(); drawBuffer(); drawScreen(); Thread.sleep(15); } catch(Exception e) { e.printStackTrace(); } } } } </code></pre> <p>InputHandler (InputHandler.java)</p> <pre><code>package com.eriksaulnier.DesignedToFail; import java.awt.event.KeyListener; import java.awt.event.MouseListener; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import javax.swing.JPanel; public class InputHandler extends JPanel implements KeyListener, MouseListener { public boolean isShooting = false; Entity player; public InputHandler () { System.out.println("Listener Works!"); } public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { int button = e.getButton(); if (button == MouseEvent.BUTTON1) isShooting = true; System.out.println("Shooting!"); } public void mouseReleased(MouseEvent e) { int button = e.getButton(); if (button == MouseEvent.BUTTON1) isShooting = false; System.out.println("Not Shooting!"); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_W) player.up = true; if (key == KeyEvent.VK_S) player.down = true; if (key == KeyEvent.VK_A) player.left = true; if (key == KeyEvent.VK_D) player.right = true; } public void keyReleased(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_W) player.up = false; if (key == KeyEvent.VK_S) player.down = false; if (key == KeyEvent.VK_A) player.left = false; if (key == KeyEvent.VK_D) player.right = false; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload