问题是,我编写了一个事件循环来检测keydown和keyup事件。我遇到的问题是,当按下并按住键时,key down事件生成keydown和keydup事件。我使用箭头键移动一个对象,然后在释放该键时停止移动(keyup)。任何帮助都会有帮助的。谢谢。=)
贾斯廷
我会张贴代码,但我不能让它看起来正确。
print(" SDL_Event event;
SDL_EnableKeyRepeat(0,0);
while(SDL_PollEvent(&event)){
switch(event.type){
case SDL_QUIT:
done = true;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_ESCAPE:
done = true;
break;
case SDLK_LEFT:
animate_x = -5;
cout << "left press\n";
break;
case SDLK_RIGHT:
animate_x = 5;
break;
case SDLK_UP:
animate_y = -5;
break;
case SDLK_DOWN:
animate_y = 5;
break;
default:
break;
}
break; -left out in original
case SDL_KEYUP:
switch(event.key.keysym.sym){
case SDLK_LEFT:
cout << "left up\n";
animate_x = 0;
break;
case SDLK_RIGHT:
animate_x = 0;
break;
case SDLK_UP:
animate_y = 0;
break;
case SDLK_DOWN:
animate_y = 0;
break;
default:
break;
}
break; -left out in original
}
}");
在试图找出如何发布代码时,我注意到在其中两种情况下我遗漏了一个默认值。代码现在可以工作了。它一直在执行案例,并执行与队列中的代码匹配的代码。愚蠢的我。谢谢你的帮助。=)