4

SDL 2.0 でキーダウン イベントをポーリングしてキーを押し続けると、複数のキーダウン イベントが次々と発生します。SDL 1.2.15 を使用して同じプログラムを実行しようとすると (SDL 1.2.15 は SDL_Window をサポートしていないため、小さな変更を加えて)、この問題は発生しません。keydown イベントは、想定どおりに 1 回だけ発生します。別のコンピューターでプログラムを実行して、コンピューター固有の問題ではないことを確認しました。

関連するコードは次のとおりです。

#include <iostream>
#include <SDL.h>
using namespace std;

SDL_Event event;
SDL_Window* screen = NULL;
int main(int argc, char* args[])
{
    if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
    {
        cout << "ERROR INIT";
        return 0;
    }
    screen = SDL_CreateWindow("My Game Window",
                          SDL_WINDOWPOS_UNDEFINED,
                          SDL_WINDOWPOS_UNDEFINED,
                          640, 480,
                          SDL_WINDOW_OPENGL);


    bool quit = false;
    while(!quit)
    {
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_KEYDOWN)
            {
                cout << "KEY PRESSED!" << endl;
            }
        }
    }
    return 0;
}
4

1 に答える 1

3

SDL_KEYDOWNのイベントを無視しますevent.key.repeat != 0

于 2013-12-13T05:24:50.613 に答える