C++ 事件键控行为问题
问题是,我编写了一个事件循环来检测keydown和keydup事件。我遇到的问题是,当按下并按住键时,keydown事件会生成keydown和keydup事件。我使用箭头键移动对象,然后在释放键(keyup)时停止移动。任何帮助都会有帮助。谢谢 贾斯汀 另外,我会发布代码,但我不能让它看起来正确C++ 事件键控行为问题,c++,sdl,C++,Sdl,问题是,我编写了一个事件循环来检测keydown和keydup事件。我遇到的问题是,当按下并按住键时,keydown事件会生成keydown和keydup事件。我使用箭头键移动对象,然后在释放键(keyup)时停止移动。任何帮助都会有帮助。谢谢 贾斯汀 另外,我会发布代码,但我不能让它看起来正确 print(" SDL_Event event; SDL_EnableKeyRepeat(0,0); while(SDL_PollEvent(&event)){
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
}
}");
打印(“SDL_事件;
SDL_EnableKeyRepeat(0,0);
while(SDL_事件和事件)){
开关(事件类型){
案例SDL_退出:
完成=正确;
打破
案例SDL_按键关闭:
开关(event.key.keysym.sym){
案例SDLK_逃生:
完成=正确;
打破
案例SDLK_左:
动画_x=-5;
cout看起来您启用了密钥重复。要禁用它,请使用
SDL_EnableKeyRepeat(0, 0);
您可能希望使用SDL\u GetKeyState
而不是跟踪keydown/keyup;我使用它来检测关键点的即时状态,您可以使用它来确定关键点是否在连续帧上被按住。如果keydown发送两个事件。如果keyup只发送一个keyup事件。当有更多keyup事件时,您不能停止移动吗我们需要一些代码,我想。试着发布你所拥有的,我们会处理它的外观。谢谢各位。这是switch语句的问题。在我的情况下,这不起作用,因为问题是switch语句。我的代码在那里显示它,但如果你注释掉它,它不会影响任何东西。谢谢你的建议这让我对这个问题有了不同的看法