Ввод SDL дает «фальшивые события» при запуске - PullRequest
0 голосов
/ 10 февраля 2012

У меня небольшая проблема с SDL: При запуске моей Программы (в Archlinux 64bit) 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 в указанное значение (true / false).

Кроме того, это не только клавиша Escape. Часто нажимаются и другие клавиши.

1 Ответ

0 голосов
/ 11 февраля 2012

Окей, прости.SDL не имеет никаких ошибок, и код, который я показал вам, является правильным.

Проблема была в том, что я не инициализировал свой логический массив.Так что остались случайные значения ...

Это помогло:

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