【发布时间】:2016-02-13 21:42:44
【问题描述】:
我已经开始编写一个 SDL2 程序。我希望整数 count 在用户按下右箭头键时上升一位,当用户按下左箭头键时下降一位。
#include <iostream>
#include <SDL2/SDL.h>
int main(){
SDL_Window *window= SDL_CreateWindow("test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
int count= 0;
bool isRunning= true;
SDL_Event ev;
while(isRunning){
if(SDL_PollEvent(&ev)){
if(ev.type == SDL_QUIT || ev.key.keysym.scancode == SDL_SCANCODE_ESCAPE)
return 0;
}
const Uint8 *keystate= SDL_GetKeyboardState(NULL);
if(keystate[SDL_SCANCODE_LEFT])
--count;
else if(keystate[SDL_SCANCODE_RIGHT])
++count;
std::cout << count << std::endl;
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
以下是我启动程序并简要点击右侧时打印的示例——全部在一两秒内完成:
0
0
0
0
0
0
0
0
0
0
0
1
2
3
4
4
4
4
4
当我快速点击右箭头键时,我希望 count 仅上升一位,但它却从 0 变为 4。
为什么?
我该如何解决这个问题?
【问题讨论】: