C++ の SDL で F1 キーのイベントをキャッチしようとしています。しかし、どういうわけか、F1 キーを押した後に変更が表示されません。しかし、画面上のアニメーション オブジェクトを切り替えたい場合は、SDL_t ケースを使用して実行すると、正常に実行されます。F1キーを取らない理由がわからないだけです。キー プレス イベントを処理するための switch ケースを次に示します。
SDL_Event event;
bool done = false;
bool keyPress = false;
while ( not done ) {
draw();
SDL_Flip(screen);
SDL_PollEvent(&event);
if (event.type == SDL_QUIT) { break; }
if(event.type == SDL_KEYUP) { keyCatch = false; }
if(event.type == SDL_KEYDOWN) {
switch ( event.key.keysym.sym ) {
case SDLK_ESCAPE : done = true; break;
case SDLK_q : done = true; break;
case SDLK_F1 : {
if(!keyCatch){
keyPress=true;
//this method is from another class.
io.printMessageAt("F1 is selected:",50,10);
currentOrb = (currentOrb+1) % orbs.size();
}
break;
}
case SDLK_t : case SDLK_SPACE :
if ( !keyPress ) {
//something
}
break;
case SDLK_p : {
if (!keyPress) {
keyPress = true;
//something
}
break;
}
default : break;
}
}
}
注:ここでコード全体を提供することはできません。上記は、私がやろうとしている私の部分です。