[英]C++ & SDL: SDL event repeats endlessly
我有以下代碼,這是一個基於SDL的簡單游戲的一部分:
SDL_PollEvent(&event);
switch (event.type){
case SDL_QUIT:
quit = true;
break;
case SDL_KEYDOWN: //Det här är för när en knapp trycks ner...
switch (event.key.keysym.sym){
case SDLK_RIGHT:
player1.x_vel = 5.5;
std::cout<<"OOOO\n";
break;
case SDLK_DOWN:
player2_sprite.src.x = 58;
break;
}
break;
case SDL_KEYUP: //Det här är för när en knapp släpps upp..
switch (event.key.keysym.sym){
case SDLK_UP:
std::cout<<"haaaaa\n";
if(player1.canJump){
player1.y_vel = -7.5;
player1.canJump = false;
}
break;
case SDLK_DOWN:
std::cout<<"BBBB\n";
player2_sprite.src.x = 0;
break;
}
break;
}
現在,在釋放UP或DOWN箭頭鍵后,釋放事件將永遠觸發,直到處理了其他任何事件為止。 我在這里做錯了什么?
您應該檢查SDL_PollEvent
的返回值。 如果有要處理的事件,則返回1,否則返回0。 通常,您可以像這樣循環處理事件(從此處的文檔中復制):
while (1) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
// handle your event here
}
// do some other stuff here -- draw your app, etc.
}
在您的情況下可能發生的事情是,即使SDL_PollEvent
返回0,您也正在處理事件。在這種情況下,事件對象保持不變,因此您一遍又一遍地處理最近的事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.