J'avais posté cela à un mauvais endroit (GameDev
) et je n'ai reçu aucune réponse. Donc je le publie à nouveau ici.Java Applet Game Design: Mise au point du clavier
Je fais un jeu d'applet et c'est le rendu, la boucle de jeu est en cours, les animations sont en train de se mettre à jour, mais l'entrée au clavier ne fonctionne pas. Voici un SSCCE.
public class Game extends JApplet implements Runnable {
public void init(){
// Initialize the game when called by browser
setFocusable(true);
requestFocus();
requestFocusInWindow(); // Always returning false
GInput.install(this); // Install the input manager for this class
new Thread(this).start();
}
public void run(){
startGameLoop();
}
}
Et voici la classe GInput.
public class GInput implements KeyListener {
public static void install(Component c){
new GInput(c);
}
public GInput(Component c){
c.addKeyListener(this);
}
public void keyPressed(KeyEvent e){
System.out.println("A key has been pressed");
}
......
}
Ceci est ma classe GInput. Lorsqu'il est exécuté en tant qu'applet, cela ne fonctionne pas et lorsque j'ajoute la classe Game à un cadre, cela fonctionne correctement.
Merci
Résolu maintenant. Voir ma solution
La page de GameDev est http://gamedev.stackexchange.com/questions/34555/java-applet-game-design-no-keyboard-focus –
Comme il fonctionne comme un cadre, la meilleure approche est de lancer le frame à partir d'un lien en utilisant [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info). –
Je ne fais pas d'applets, donc je ne peux pas dire avec certitude quel est le problème, mais vous pouvez contourner les problèmes de mise au point en utilisant les liaisons de touches au lieu d'un KeyListener. De plus, votre SSCCE n'est pas conforme à la spécification SSCCE. Nous ne pouvons pas l'exécuter ni le tester. –