2012-02-10 8 views
0

私はSDLで少し問題があります: 私のプログラム(Archlinux 64bit)を起動すると、SDL_eventは私にSDL_KEYDOWNイベントを与えます。その厄介なことは、私のプログラムがESCAPEを押すと終了するということです。起動時にSDL入力が "fake-Events"を返します

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()は、所定の値(真/偽)にブール配列の要素を設定します。

また、エスケープキーだけでなく、多くの場合、他のキーも押されています。

+0

は、 ')(' SDL_PumpEventsをコメントアウトしてみてください:だからがあったランダムな値が助け

は...左。 'SDL_PollEvent()'によって暗黙に呼び出されているので、あなたはそれが必要ではないと思います。 – jrok

答えて

0

Okey、申し訳ありません。 SDLにはバグがありません。私はあなたに示したコードは正しいです。

問題は、ブール値の配列を初期化しなかったことです。

for (int i = 0; i < MAX_VAL; i++) { 
    keys[i] = false; 
} 
関連する問題