SDL 输入在启动时提供"fake-Events"

SDL Input gives "fake-Events" on Startup

本文关键字:fake-Events 输入 启动 SDL      更新时间:2023-10-16

SDL有一个小问题:当启动我的程序(在Archlinux 64位上)时,SDL_event会给我一些SDL_KEYDOWN事件。令人讨厌的是,当按下ESCAPE时,我的程序退出了。

这就是代码:

void Input::update() {
    [...]
    while(SDL_PollEvent(event)) {
        if (event != NULL) {
            handleInput();
        }
    }
    // SDL_PumpEvents(); Commented out, because of jrok's suggestion.
    SDL_GetMouseState(&mousex, &mousey);
}

和:

void Input::handleInput() {
    switch(event->type) {
    case SDL_KEYDOWN:
        setKey(event->key, true);
        break;
    case SDL_KEYUP:
        setKey(event->key, false);
        break;
    case SDL_QUIT:
        setQuit();
        break;
    default:
        break;
    }
}

setKey()将布尔数组的元素设置为给定值(true/false)。

此外,这不仅仅是Escape键。其他按键也经常被按下。

好的,对不起。SDL没有任何错误,我向您展示的代码是正确的。

问题是,我没有初始化我的布尔数组。所以剩下随机值。。。

帮助:

for (int i = 0; i < MAX_VAL; i++) {
    keys[i] = false;
}