0

SDL を使用して、キーが押されたかどうかを確認したいと考えています。私は働きません。イベントも使用してみましたが、SDL_KEYDOWN イベントは発生しませんでした。Visual C++ 2010 Express、Windows7。多分私はSDLまたはプロジェクトを間違ってセットアップしましたか? どうすれば知ることができますか?

SDL_PumpEvents();
Uint8 *keys = SDL_GetKeyState(NULL);
if (keys[SDLK_RIGHT]) {         
    this->player.xf+=2.0f;      // never reached
}
4

3 に答える 3

4

ドキュメント で説明されているように、SDL_GetKeyState()ポインターごとに 1 回だけ呼び出す必要があります。

Uint8 *keys = SDL_GetKeyState(NULL);メモリを割り当て(!)、配列へのポインタを返します。この配列は、プログラム期間全体にわたって有効であり、解放しないでください。

これが呼び出されると、配列へのポインターが得られ、それを使用してキーの状態を確認できます
keys[ SDLK_anykey ]

keys配列を更新したい場合は、単に呼び出しますSDL_PumpEvents();

于 2013-04-13T21:01:49.433 に答える
0

通常SDL_PollEvent、キーステートのプルを処理し、最終的に を呼び出しますSDL_PumpEvents()

ループの反復ごとに新しいポインターを作成する必要がないことは事実ですが、コードは問題なく動作するはずです。問題の「原因」を見つけるには、追加の詳細を提供する必要があります。

于 2013-04-16T16:28:46.220 に答える