Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 事件状态切换_C++_Sdl - Fatal编程技术网

C++ 事件状态切换

C++ 事件状态切换,c++,sdl,C++,Sdl,我一直在使用SDL_EventState来禁用和启用某些事件。然而,由于某种原因,一旦我将任何状态设置为on或off,程序中的任何其他地方都无法更改它。为了进一步解释,这里是我的循环 void game::startLoop() { while(QUIT == false) { getRoomUpdate(); applySurface(-15, 280, zombie_lefthand, buffer); applySurface

我一直在使用SDL_EventState来禁用和启用某些事件。然而,由于某种原因,一旦我将任何状态设置为on或off,程序中的任何其他地方都无法更改它。为了进一步解释,这里是我的循环

void game::startLoop()
{
    while(QUIT == false)
    {
        getRoomUpdate();
        applySurface(-15, 280, zombie_lefthand, buffer);
        applySurface(455, 280, zombie_righthand, buffer);

        SDL_Flip(buffer);

        SDL_WaitEvent(&gameEvent);
        {
            switch(gameEvent.type)
            {
                case SDL_QUIT:
                QUIT = true;
                break;

                case SDL_KEYUP:
                switch(gameEvent.key.keysym.sym)
                {
                    case SDLK_LEFT:
                    if(isTwoWay == true)
                        SDL_EventState(SDL_KEYUP, 1);
                        startLoop();
                        log("Left key pressed.");
                        SDL_EventState(SDL_KEYUP, 0);

                    case SDLK_RIGHT:
                    if(isTwoWay == true)
                        SDL_EventState(SDL_KEYUP, 1);
                        startLoop();
                        log("Right key pressed.");
                        SDL_EventState(SDL_KEYUP, 0);

                    case SDLK_UP:
                    if(isTwoWay == false)
                        SDL_EventState(SDL_KEYUP, 1);
                        startLoop();
                        log("Up key pressed.");
                        SDL_EventState(SDL_KEYUP, 0);

                    default:
                    SDL_EventState(SDL_KEYUP, 0);
                }
            }
        }
    }
}

也许如果您尝试了其他人的代码。
如果成功,您可以尝试将他们的代码转换为类似您的代码(功能方面)

祝你好运

p、 我认为您应该使用SDL_ENABLE和SDL_DISABLE。

您想用这些代码做什么?我试图只允许KEYUP在特定时间注册。我们现在不能让东西穿墙而过,对吗?