1
由於某些原因,當我通過event
到playerObj_behavior
時,我的功能中的switch
不起作用,當我點擊SPACE時,main
內的開關工作得很好。當我仍然將整個開關直接放在主體的內部時,所有人都在工作。發生什麼事 ?爲什麼我無法將事件傳遞給函數(SDL2)?
#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*/
}
編輯:傳遞SDL_Keycode *sym
,而不是SDL_Event event
讓精靈對我的反應緊迫的空間,但它是所有車和unconsistent與運動公式。
當我複製/粘貼我的代碼功能到主和熔斷器開關都工作得很好。到底他媽發生了什麼 ?
沒有理由不應該工作。除非,您的SDL_PollEvent()調用處於while循環中,並且playerObj_behavior()處於循環之外。 – askmish
我不明白,我在這麼浪費了很多時間:/,也許我應該把這個事件當作一個指針來傳遞?但是如果我這樣做,我應該使用'event-> type'和'event-> key.keysym.sym',我有點迷路了? – Wicelo
在main()中使用'event.type'並且如果您將它作爲指針傳遞,那麼在playerObj_behavior() – askmish