c - allegro 中按键事件的错误

标签 c keyboard-events allegro5

我正在按照命令使用 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/

相关文章:

c++ - Allegro5 和 MS Visual Studio 2010

c++ - fread 可以是不可租的吗?

c - 相同但为什么工作方式不同?

javascript - 即使按下其他按钮也继续 keydown 事件

c# - 识别事件键是否为文本(不仅是字母数字)

c - 根据鼠标旋转图像

objective-c - 向 Objective C 实例发送 C 函数

c - 找不到 VsCode crtdbg.h,如何解决?

android - 输入按键事件在数字输入字段上不起作用?

c++ - 快板 5 不工作