SDL输入在启动时提供“假事件”

时间:2012-02-10 13:26:18

标签: c++ opengl sdl

我对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()将bool-Array的Element设置为给定值(true / false)。

此外,它不仅是Escape键。通常也会按下其他键。

1 个答案:

答案 0 :(得分:0)

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

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

这有助于:

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