Autor
|
Tema: ¿Cómo detectar varias teclas por teclado simultáneamente? (Leído 3,140 veces)
|
Zodiak98
Desconectado
Mensajes: 120
|
Verán, actualmente estoy programando un juego bastante simple en Java, pero hay una cosa. Cuando yo presiono la tecla de la flecha izquierda(por ejemplo) la nave empieza a moverse (lógicamente) hacia la izquierda, pero si mientras la tengo presionada, presiono espacio (para disparar), la nave se detiene.
Lo que quiero es que me orienten en cómo hacer que eso no suceda, es decir, que la nave no deje de moverse mientras tenga la tecla presionada independientemente si presiono espacio.
Es decir, me muevo, presiono espacio, que dispare, y si no he soltado la tecla, que no se detenga sino que siga moviéndome hasta que la suelte (en este ejemplo, la izquierda).
|
|
|
En línea
|
|
|
|
Gunhack
Desconectado
Mensajes: 42
|
Para eso hay dos eventos, keyPressed y keyReleased. Con un array añades la tecla pulsada al mismo cada vez que detectas un keyPressed, y si detectas keyReleased lo quitas del array.
|
|
|
En línea
|
|
|
|
Gunhack
Desconectado
Mensajes: 42
|
Intenta probar esto y dime si es lo que necesitabas import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import javax.swing.*; public class PruebaTeclas { public static void main (String[] args ) { new WindowPrinc(); } } class WindowPrinc extends JFrame { private JLabel lDireccion, lCouunt ; private int disp; java.util.List<String> Dir; public WindowPrinc() { setTitle("Prueba"); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setBounds (Toolkit. getDefaultToolkit(). getScreenSize(). width/2 - 100, Toolkit. getDefaultToolkit(). getScreenSize(). height/2 - 100, 100, 100); lDireccion = new JLabel("Direccion: N/A"); lCouunt = new JLabel("Disparos: 0"); disp = 0; Dir = new ArrayList<>(); Dir.add("N/A"); add(lDireccion); add(lCouunt); @Override int c = 0; if(c == 0 && Dir.size() < 2) { switch(e.getKeyCode()) { Dir.add("ARRIBA"); break; Dir.add("ABAJO"); break; Dir.add("IZQUIERDA"); break; Dir.add("DERECHA"); break; } c++; } if(e. getKeyCode() == KeyEvent. VK_SPACE) { disp++; lCouunt.setText("Disparos: " + disp); } lDireccion.setText("Direccion: " + Dir.get(Dir.size()-1)); } @Override switch(e.getKeyCode()) { deleteKey("ARRIBA"); break; deleteKey("ABAJO"); break; deleteKey("IZQUIERDA"); break; deleteKey("DERECHA"); break; } lDireccion.setText("Direccion: " + Dir.get(Dir.size()-1)); } for(int i = 0; i < Dir.size(); i++) { if(dir == Dir.get(i)){ Dir.remove(i); } } if(Dir.size() == 0) { Dir.add("N/A"); } } }); setVisible(true); } }
|
|
|
En línea
|
|
|
|
+ 1 Oculto(s)
Desconectado
Mensajes: 298
un defecto se puede convertir en una virtud
|
ohh funciona con varias teclas, tuve este mismo problema y recien veo la solucion
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿software de grabacion para grabar simultaneamente con varias grabadoras?
Software
|
elfenixsoyyo
|
4
|
6,494
|
3 Noviembre 2005, 15:05 pm
por dpx06
|
|
|
Numero máximo de teclas pulsadas simultaneamente
Electrónica
|
PhenfiX
|
3
|
6,037
|
6 Octubre 2005, 20:03 pm
por botboat
|
|
|
Conectarme Simultaneamente a Varias Redes WiFi
« 1 2 »
Hacking Wireless
|
skynet777
|
14
|
17,996
|
14 Agosto 2010, 14:43 pm
por faithless29d
|
|
|
¿Un IDE para trabajar en línea varias personas simultaneamente?
Dudas Generales
|
Aikanáro Anário
|
2
|
5,180
|
22 Julio 2011, 19:49 pm
por raul338
|
|
|
¿Como Grabar varias imágenes de disco simultáneamente mediante batch?
Scripting
|
mario290386
|
2
|
2,006
|
1 Mayo 2017, 12:24 pm
por mario290386
|
|