【发布时间】:2021-11-20 01:05:30
【问题描述】:
编辑:我通过将SDLKEYUP 更改为SDLKEYDOWN 解决了这个问题。谁能解释一下原因?
我正在尝试使用 SDL2 在 C 中按“p”时编写暂停按钮。
下面的代码在按下 'p' 时停止精灵移动,并在按下 'r' 时恢复它:
SDL_PollEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYUP:
switch(event.key.keysym.sym)
{
case SDLK_p:
pause=1;
break;
case SDLK_r:
pause=0;
break;
}
}
但是下面的代码在按下“p”时不会暂停,int pause=0 在开始时和主循环之外声明,并且除了下面的 SDLK_p 之外没有修改。好像if(pause==0) 不起作用:
SDL_PollEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYUP:
switch(event.key.keysym.sym)
{
case SDLK_p:
if(pause==0)
{
pause=1;
break;
} else pause=0;
break;
case SDLK_ESCAPE:
continuer=0;
break;
}
}
【问题讨论】:
-
在代码的 if 和 else 部分添加一些日志,看看它是否被命中以及何时被命中。
-
类型?您在
SDLK_r中说第二个代码,但它是SDLK_p? -
是的,我的错,SDLK_p
-
@RetiredNinja 你的意思是通过记录添加断点吗?
-
@RetiredNinja 或者你的意思是像 stderr 和 GetError() 这样的东西?老实说,我是一个初学者,以前从未使用过,你介意指出我记录 if 和 else 语句的好方向吗?
标签: c if-statement sdl-2