SDL_EVENTS如何制作

SDL_Events how to make it

本文关键字:何制作 EVENTS SDL      更新时间:2023-10-16

我写了一个功能,可以帮助我用SDL

移动汽车
if (events.type == SDL_KEYDOWN)
    {
        switch(events.key.keysym.sym)
        {
            case SDLK_UP:
                y_val -=main_car_speed;
                break;
            case SDLK_DOWN:
                y_val +=main_car_speed;
                break;
            case SDLK_RIGHT:
                x_val +=main_car_speed;
                break;
            case SDLK_LEFT:
                x_val -=main_car_speed;
                break;
        }

这很简单。但是我遇到了一个问题,当我向上压下。我的车只是继续前进,而不是继续前进,然后留在Sametime。如何解决此问题?

使用事件,如果按下'up'之后按'向左',您的程序将停止接收'up up'键压力的事件,而将仅接收"左"键 - 压力。如果您想知道键是否在任何时候按下按下,而不是对键首次按下时反应,则以下代码应为您提供帮助:

// inside main loop, after events have been handled
const Uint8* keystates = SDL_GetKeyboardState(NULL);
if (keystate[SDL_SCANCODE_UP]){
    y_val -= main_car_speed;
}
if (keystate[SDL_SCANCODE_LEFT]){
    x_val -= main_car_speed;
}

请查看SDL_GetKeyBoardState的文档以获取详细信息