SDL2 jbutton枚举?

时间:2014-07-07 04:13:43

标签: sdl jbutton joystick

我在查明SDL2的游戏手柄/操纵杆支持中可以/应该使用的枚举时遇到了一些麻烦。我尝试使用" SDL_CONTROLLER _ *",但我最终得到了一些奇怪的结果。例如:

  SDL_Event e;
    while (SDL_PollEvent(&e) != 0)
    {
       if (e.type == SDL_JOYBUTTONDOWN)
       {
            printf("%d\n", e.jbutton.button);
            if (e.jbutton.button == SDL_CONTROLLER_BUTTON_B)
            {
                printf("HI\n");
            }
        }
    }

我在我的函数主循环中有这个代码,当我按下D-pad的向下按钮时,第二个打印语句会消失,而不是在我按下B按钮时。我使用的是XBOX 360控制器,当我玩其他游戏时,它给我带来了麻烦。我甚至使用了正确的枚举吗?

1 个答案:

答案 0 :(得分:1)

控制器具有与操纵杆不同的输入处理。

您需要使用Controller事件:

SDL_CONTROLLERAXISMOTION: controller axis motion
SDL_CONTROLLERBUTTONDOWN: controller button pressed
SDL_CONTROLLERBUTTONUP: controller button released
SDL_CONTROLLERDEVICEADDED: controller connected
SDL_CONTROLLERDEVICEREMOVED: controller disconnected
SDL_CONTROLLERDEVICEREMAPPED: controller mapping updated

正如您在此页面中看到的那样https://wiki.libsdl.org/SDL_EventType