我正在按顺序使用Allegro进行课程的作业。

我需要捕获键盘上的按键事件,为此,我使用了以下代码:

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';
}


但是此事件一次返回6次值!

在我以前包含的代码中,此命令:

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


我哪里错了?

最佳答案

在ALLEGRO_EVENT_KEY_UP事件之前,将有ALLEGRO_EVENT_KEY_DOWN。

只需将UP更改为DOWN即可。

关于c - 有关快板按键事件的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24237245/

10-12 16:01