我正在按顺序使用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/