SDLK困惑

时间:2012-03-23 00:07:28

标签: c++ keyboard sdl

SDLK_'anykey'如何运作?在我的游戏中,按下Ctrl键时必须弹出一个子弹,但是通过断点和测试打印语句我已经意识到,即使我按下'ctrl'一次,该函数也会被多次调用。这是为什么?我该如何避免这种情况?

没什么 - 这是主循环中的开关案例:

            case SDLK_p :
            s.origin(cat);
            break;   

其中s是一个调用Shoot类的origin函数的对象,并将一个帧传递给它。在origin函数中使用count变量,我现在知道调用该函数的次数等于我按住'p'键的秒数!怎么预防这个?

2 个答案:

答案 0 :(得分:1)

SDL_PollEvent(&event);

您需要检查SDL_PollEvent的返回值。如果它为0,则没有未决事件,您不应该尝试处理它。

答案 1 :(得分:0)

根据documentation,您应该将此行添加到SDL初始化:

SDL_EnableKeyRepeat(0,0);