【问题标题】:Sdl2 joystick don't capture "Pressed event"Sdl2 操纵杆不捕获“按下事件”
【发布时间】:2015-01-23 08:09:10
【问题描述】:

我有一个在 SDL(简单直接媒体层)上运行的应用程序。我已将其移植到 SDL2。但是移植后,joystick(SDL_PollEvent) 只是捕获了joysticks 按钮的释放事件。 在 SDL2 中是否有任何错误或捕捉新闻事件的任何设置?

【问题讨论】:

    标签: c++ sdl sdl-2 joystick


    【解决方案1】:

    我也有一个循环和开关语句。我只能通过这个循环获得操纵杆按钮的释放事件。

    几秒钟前我找到了答案。如果我在 SDL_Init 语句之前调用 SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS,"1") ,摇杆按钮获取按下和释放事件,否则轮询无法捕获按下事件。

    【讨论】:

    • 这对我也有用。我制作了一个游戏引擎,当您按下按钮(在本例中为操纵杆按钮)时将加载地图,并且如果您按下和释放太快,则不会调用“释放”事件。在通过某些库(例如,libzip。谁知道)进行处理时,似乎游戏被认为是“在后台”。如果其他人有这个问题,这里还有一些文档:wiki.libsdl.org/SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
    【解决方案2】:

    您可以通过使用 switch 语句来实现这一点,例如:

    while( SDL_PollEvent( &event ) )
    {
        switch( event.type )
        {
          case SDL_KEYDOWN:
            printf( "Key pressed" );
            break;
    
          default:
            break;
        }
    }
    

    我看不出有什么特别的改变。

    此外,删除此功能也没有任何意义,所以我猜你可能做错了什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多