为什么我不能将事件传递给函数(SDL2)?

时间:2014-07-26 19:20:07

标签: c events sdl sdl-2

出于某些原因,当我将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并将开关熔断时,所有工作都正常。到底是怎么回事?

1 个答案:

答案 0 :(得分:1)

我终于找到了罪魁祸首,外化函数也使得一些变量局部化,因此它们在主循环的每个回合处初始化。我将这些函数外部化为我的对象结构,现在一切正常。我需要让GDB在Windows上工作,这样我才能更快地找到这些问题。