SDL键盘响应事件突然阻碍函数运行

用SDL写俄罗斯方块的时候,在自动下落中插入键盘响应事件函数,自动下落会中断。这是今天晚上发生的,今天上午还没事。我写了一个新函数后就这样了,后来把上午的代码完整的复制过... 用SDL写俄罗斯方块的时候,在自动下落中插入键盘响应事件函数,自动下落会中断。
这是今天晚上发生的,今天上午还没事。
我写了一个新函数后就这样了,后来把上午的代码完整的复制过来运行也不行了。求高手解答啊!!!
展开
 我来答
苏糖核酸
2012-02-22
知道答主
回答量:9
采纳率:0%
帮助的人:6.5万
展开全部
是用SDL_PollEvent(&ev)吗? 如果是SDL_WaitEvent在没有用户消息的时候会造成程序等待,从而影响到游戏的帧数,这样在有动画的游戏中,就会出现用户不操作的时候界面停止,当用户再次操作时,界面发生跳跃的情况 ..给个样本如下
int done=0;

while(done == 0)
{
 SDL_Event event;

 while ( SDL_PollEvent(&event) )
 {
  if ( event.type == SDL_QUIT ) { done = 1; }

  if ( event.type == SDL_KEYDOWN )
  {
   if ( event.key.keysym.sym == SDLK_ESCAPE ) { done = 1; }
  }
 }
 keys = SDL_GetKeyState(NULL);
 if ( keys[SDLK_UP] ) { ypos -= 1; }
 if ( keys[SDLK_DOWN] ) { ypos += 1; }
 if ( keys[SDLK_LEFT] ) { xpos -= 1; }
 if ( keys[SDLK_RIGHT] ) { xpos += 1; }

 DrawScene();
}

我们不在事件轮询SDL_PollEvent中检查按键,因为事件轮询中是只有触发事件也即SDL_PollEvent(&event) == 1才能进入循环的,因而如果我们一直按下某键不放开是不会触发新的事件发生的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式