出于某些原因,当我将event
传递给playerObj_behavior
switch
时,main
内部#include <SDL.h>
#include <stdio.h>
void playerObj_behavior(SDL_Renderer * pRenderer, SDL_Event event)
{
/*code*/
if (event.type == SDL_KEYDOWN)
{
switch (event.key.keysym.sym)
{
case SDLK_SPACE:
pressTimer = SDL_GetTicks();
moveRef = playerObj.pos.y;
break;
}
}
/*code*/
}
int main(int argc, char** argv)
{
/*code*/
SDL_PollEvent(&event);
switch (event.type)
{
case SDL_QUIT:
keepExe = 0;
break;
}
playerObj_behavior(pRenderer, event);
/*code*/
}
内部的切换工作时我的功能不起作用正好。当我仍然将整个开关直接放在main中时,一切正常。发生了什么事?
SDL_Keycode *sym
编辑:传递SDL_Event event
而不是{{1}}会让精灵对我施加压力,但是对于移动公式来说,这一切都是错误的和不一致的。
当我将代码功能复制/粘贴到main并将开关熔断时,所有工作都正常。到底是怎么回事?
答案 0 :(得分:1)
我终于找到了罪魁祸首,外化函数也使得一些变量局部化,因此它们在主循环的每个回合处初始化。我将这些函数外部化为我的对象结构,现在一切正常。我需要让GDB在Windows上工作,这样我才能更快地找到这些问题。