CyberDenix
Messages postés17Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention24 décembre 2007
-
11 juil. 2005 à 18:13
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 2012
-
12 juil. 2005 à 19:00
Bonjour,
Je suis actuellement en train de développer un petit zelda (pour le fun), et j'aimerai pouvoir changer d'arme tout en courant.
J'ai donc affecté les touches de changement d'arme aux touches 1 et 2 situés sous les touches F1 & cie.
Je déplace mon link avec les touches fléchées, bien évidemment .
Toutefois, lorsque je change d'arme tout en courant (en réalité lorsque j'appuie ou relache une touche quelconque pendant que je suis en train d'en presser une autre), l'évènement KeyPressed n'est plus écouté et mon link s'arrete de courir !
Pour qu'il reprenne sa course, je dois réappuyer sur une fleche.
Apparement le KeyPressed fait en sorte que le programme cesse d'écouter les évènements qui étaient en cours, et attends un nouvel ordre de frappe de touche. Un peu génant...
Je vous mets le petit bout de code :
public void keyTyped(KeyEvent kev)
{
if (kev.getKeyChar() == '&')
link.setWeapon("sword");
if (kev.getKeyChar() == 'é')
link.setWeapon("boomerang");
}
public void keyPressed(KeyEvent kev)
{
if (kev.getKeyCode() == java.awt.event.KeyEvent.VK_SPACE)
link.setAttackSprite();
if (kev.getKeyCode() == java.awt.event.KeyEvent.VK_UP)
link.setSprite("walk", "up", 16, 23);
if (kev.getKeyCode() == java.awt.event.KeyEvent.VK_DOWN)
link.setSprite("walk", "down", 16, 24);
if (kev.getKeyCode() == java.awt.event.KeyEvent.VK_LEFT)
link.setSprite("walk", "left", 18, 24);
if (kev.getKeyCode() == java.awt.event.KeyEvent.VK_RIGHT)
link.setSprite("walk", "right", 18, 24);
}
public void keyReleased(KeyEvent kev)
{}
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201211 11 juil. 2005 à 21:59
deja ... peut il marcher en meme temp vers le bas et le haut et la droite et la gauche ?!!
je ne pense pas donc il devrai y avoir des "else" entre chaque test ...
autrement pour comprendre le comportement du keyPressed tu peu faire un sysout de l'event ...
et si en effet il ne transmet plus l information apres l appuye d une autre touche tu peu le gerrer ...
CyberDenix
Messages postés17Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention24 décembre 2007 11 juil. 2005 à 23:58
J'ai fait des println(), tu penses bien !
En cas d'appuit prolongé sur deux touches, Java ne semble écouter que la touche pressée en dernier.
Comment puis-je donc gérer l'appui de deux touches simultanément ?
regarde la class Pong .. ; o) c est pas vraiment le top ;o) mais c est un exemple plus tard je fournirai surment un model plus évolué .. ;o) pour l instant celui ci fonctionne ;o)