我无法弄清楚如何使用SDL库正确处理按键。
截至目前,我有以下代码:
bool running = true;
SDL_Event event;
while (running) {
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
switch (event.key.keysym.sym){
case SDLK_RIGHT:
buttons.setState(2);
SDL_UpdateWindowSurface(window);
case SDLK_LEFT:
buttons.setState(1);
SDL_UpdateWindowSurface(window);
case SDLK_INSERT:
if (buttons.getState() == 1){
buttons.setState(3);
SDL_UpdateWindowSurface(window);
SDL_Delay(50);
buttons.setState(1);
SDL_UpdateWindowSurface(window);
}
else{
if (buttons.getState() == 2){
buttons.setState(4);
SDL_UpdateWindowSurface(window);
SDL_Delay(50);
buttons.setState(2);
SDL_UpdateWindowSurface(window);
}
else{
break;
}
}
default:
running = true;
}
case SDL_QUIT:
running = false;
SDL_DestroyWindow(window);
SDL_Quit();
break;
}
}
}
有一个Drawable类,其中的按钮是其实例。状态是我要绘制的不同框架。但是,我只想按向左或向右箭头键绘制它们。到目前为止,只要按任意键,程序都将退出。
我不知道从这里去哪里。
最佳答案
case SDL_KEYDOWN:
缺少他的break语句,该语句导致每次按键都在SDL_QUIT
情况下执行代码。它应该是
default:
running = true;
}
break; <--- inserted
case SDL_QUIT:
关于c++ - 使用SDL的应用程序在任何按键上都会退出。虽然不应该,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30202771/