C++ 事件状态切换
我一直在使用SDL_EventState来禁用和启用某些事件。然而,由于某种原因,一旦我将任何状态设置为on或off,程序中的任何其他地方都无法更改它。为了进一步解释,这里是我的循环C++ 事件状态切换,c++,sdl,C++,Sdl,我一直在使用SDL_EventState来禁用和启用某些事件。然而,由于某种原因,一旦我将任何状态设置为on或off,程序中的任何其他地方都无法更改它。为了进一步解释,这里是我的循环 void game::startLoop() { while(QUIT == false) { getRoomUpdate(); applySurface(-15, 280, zombie_lefthand, buffer); applySurface
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在特定时间注册。我们现在不能让东西穿墙而过,对吗?