2014-06-16 1 views
0

Je fais un devoir de mon cours en utilisant Allegro, comme ordonné.Bug sur les événements de clé dans allegro

J'ai besoin de prendre la clé des événements sur le clavier, pour cela, j'utilisé le code de suivi:

al_wait_for_event(evento, &ev); 
if(ev.type == ALLEGRO_EVENT_KEY_UP){ 
    if (ev.keyboard.keycode==ALLEGRO_KEY_A || ev.keyboard.keycode==ALLEGRO_KEY_LEFT) 
     cmd='a'; 
    else if (ev.keyboard.keycode==ALLEGRO_KEY_W || ev.keyboard.keycode==ALLEGRO_KEY_UP) 
      cmd='w'; 
    else if (ev.keyboard.keycode==ALLEGRO_KEY_D || ev.keyboard.keycode==ALLEGRO_KEY_RIGHT) 
      cmd='d'; 
    else if (ev.keyboard.keycode==ALLEGRO_KEY_S || ev.keyboard.keycode==ALLEGRO_KEY_DOWN) 
      cmd='s'; 
} 

Mais cet événement renvoie la valeur 6 fois à la fois!

Sur le code que j'ai inclus (précédemment) cette commande:

al_install_keyboard(); 
[...] 
al_register_event_source(evento, al_get_keyboard_event_source()); 

Où suis-je tort?

Répondre

1

Avant l'événement ALLEGRO_EVENT_KEY_UP, il y aura ALLEGRO_EVENT_KEY_DOWN.

Il suffit de changer UP et DOWN.

+0

ALLEGRO_EVENT_KEY_DOWN et l'événement UP ne fait pas référence aux événements de bouton de pression et de relâchement, mais à l'état enfoncé des touches HAUT et BAS – 648trindade