Results 1 to 2 of 2
Thread: Java keypress detection help
- 05-29-2010, 06:50 PM #1
Member
- Join Date
- May 2010
- Posts
- 3
- Rep Power
- 0
Java keypress detection help
I created a keysystem which records which keys have been pressed which I use at another point in my program. The problem is, I can't get it to tell if the key has been pressed after already having been released. It worked for me in c# xna game studio, but in Java it detects like 100 presses before stopping detection because it is already down.
Here's my code:
Key.java
KeySystem.javaJava Code:package Controls; public class Key { private int keycode; protected boolean isdown; protected boolean isdownafterrelease; protected boolean released; protected long previoustime; protected long timebetween; public enum KeyEvent { Press, Released }; public Key(int code, long timeBetween) { keycode = code; isdown = false; isdownafterrelease = false; released = true; timebetween = timeBetween; previoustime = 0; } public Key(int code) { this(code, 0); } public int getKeyCode() { return keycode; } public boolean isDown() { return isdown; } public boolean isDownAfterRelease() { return isdownafterrelease; } public void Update(KeyEvent e) { if (e == KeyEvent.Press) { if (System.currentTimeMillis() - previoustime > timebetween) { if (released) isdownafterrelease = true; else isdownafterrelease = false; isdown = true; released = false; previoustime = System.currentTimeMillis(); } } else { isdown = false; isdownafterrelease = false; released = true; } } }
Java Code:package Controls; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; public class KeySystem implements KeyListener { private Key[] keys; public KeySystem(long timeBetween) { keys = new Key[5]; keys[0] = new Key(KeyEvent.VK_W); keys[1] = new Key(KeyEvent.VK_A); keys[2] = new Key(KeyEvent.VK_S); keys[3] = new Key(KeyEvent.VK_D); keys[4] = new Key(KeyEvent.VK_SPACE); } public KeySystem() { this(0); } private Key getKey(int code) { for (Key k : keys) if (k.getKeyCode() == code) return k; return null; } public void keyPressed(KeyEvent e) { Key temp = getKey(e.getKeyCode()); if (temp != null) temp.Update(Key.KeyEvent.Press); } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { Key temp = getKey(e.getKeyCode()); if (temp != null) temp.Update(Key.KeyEvent.Released); } public ArrayList<Key> pressedKeys() { ArrayList<Key> temp = new ArrayList<Key>(); for (Key k : keys) if (k.isDown()) temp.add(k); return temp; } public static boolean isKeyDown(int code) { return IControllableObject.system.getKey(code).isDown(); } public static boolean isKeyDownAfterRelease(int code) { return IControllableObject.system.getKey(code).isDownAfterRelease(); } }
- 05-29-2010, 08:30 PM #2
Similar Threads
-
KeyPress for my Button
By bigj in forum New To JavaReplies: 3Last Post: 01-26-2010, 04:27 PM -
help on motion detection
By MarkWilson in forum Advanced JavaReplies: 4Last Post: 12-07-2009, 06:45 AM -
request detection
By mtyoung in forum Advanced JavaReplies: 6Last Post: 02-05-2009, 03:46 AM -
USB Detection
By alanixu in forum New To JavaReplies: 3Last Post: 11-12-2008, 04:04 PM -
COM Port Detection in Java
By talasilasumanth in forum Forum GuidesReplies: 1Last Post: 09-10-2008, 03:18 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks