我正在按照命令使用 Allegro 做我的类(class)作业。
我需要捕获键盘上的按键事件,为此我使用了以下代码:
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 - allegro 中按键事件的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24237245/