我无法弄清楚如何使用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/

10-13 08:44