SDLK_'anykey'如何运作?在我的游戏中,按下Ctrl键时必须弹出一个子弹,但是通过断点和测试打印语句我已经意识到,即使我按下'ctrl'一次,该函数也会被多次调用。这是为什么?我该如何避免这种情况?
没什么 - 这是主循环中的开关案例:
case SDLK_p :
s.origin(cat);
break;
其中s是一个调用Shoot类的origin函数的对象,并将一个帧传递给它。在origin函数中使用count变量,我现在知道调用该函数的次数等于我按住'p'键的秒数!怎么预防这个?
答案 0 :(得分:1)
SDL_PollEvent(&event);
您需要检查SDL_PollEvent的返回值。如果它为0,则没有未决事件,您不应该尝试处理它。
答案 1 :(得分:0)
根据documentation,您应该将此行添加到SDL初始化:
SDL_EnableKeyRepeat(0,0);