Open GL SDL Keypresses和行为在程序启动时不匹配

时间:2016-04-17 02:39:17

标签: opengl input keyboard sdl

我正在使用OpenGL开发一个简单的游戏,并使用SDL库来处理我的输入。

游戏使用多个键盘按钮进行输入。两个箭头键,空格键,'r'按钮重置游戏并逃脱关闭它。

当前正在发生的事情是,当我第一次启动游戏时按下这些按钮时调用的输出或方法不匹配。 (即左箭头执行右箭头的方法)。一旦按下退出按钮一次,我按下游戏使用的每个按钮,这种随机行为就结束了。

我想知道是否有一些我缺少的东西,因为感觉我必须在每次发布游戏时“分配”每个按钮。我在下面提供了输入处理代码。

        if (e.type == SDL_KEYDOWN) {
            switch (e.key.keysym.sym) {
            case SDLK_ESCAPE:
                m_isClosed = true;
                break;
            case SDLK_SPACE:
                m_selection = true;
                break;
            case SDLK_LEFT:
                m_leftPressed = true;
                break;
            case SDLK_RIGHT:
                m_rightPressed = true;
                break;
            case SDLK_r:
                m_reset = true;
                break;
            }
        }
        if(e.type == SDL_KEYUP)
            switch (e.key.keysym.sym)
            {
            case SDLK_LEFT:
                m_leftPressed = false;
                m_keydown = false;
                break;
            case SDLK_RIGHT:
                m_rightPressed = false;
                m_keydown = false;
                break;
            case SDLK_SPACE: 
                m_selection = false;
                m_keydown = false;
                break;
            case SDLK_r:
                m_reset = false;
                m_keydown = false;
                break;
            }
    }

每个事件处理程序只是设置一个用于另一个类中的游戏逻辑的布尔值。如果您认为您需要查看更多代码以帮助我告诉我。

1 个答案:

答案 0 :(得分:0)

事实证明,我没有将对应于按钮侦听器的布尔值初始化为false。一个愚蠢的错误,但我认为我应该提供解决方案。