-1
我嘗試以不同的方式設置參數,但仍然沒有骰子。有人能告訴我這裏有什麼問題嗎?我的SDL_KEYUP參數不起作用
void controls()
{
if(cancontrol = true)
{
if(window_key.type == SDL_KEYDOWN)
{
switch(window_key.key.keysym.sym)
{
case SDLK_UP:
haneposy =+ -1;
haneposx = 0;
break;
case SDLK_LEFT:
haneposx =- 1;
haneposy = 0;
break;
case SDLK_RIGHT:
haneposx =+ 1;
haneposy = 0;
break;
case SDLK_DOWN:
haneposy =- -1;
haneposx = 0;
break;
default:
break;
}
}
if(window_key.type == SDL_KEYUP)
{
switch(window_key.key.keysym.sym)
{
case SDLK_UP:
haneposx = 0;
haneposy = 0;
break;
case SDLK_LEFT:
haneposx = 0;
haneposy = 0;
break;
case SDLK_RIGHT:
if(haneposx && haneposy > 0)
{
haneposx = 0;
haneposy = 0;
}
break;
case SDLK_DOWN:
haneposx = 0;
haneposy = 0;
break;
default:
break;
}
}
}
}
問題是,當鍵被釋放時,它不會通過將變量等於零來停止移動精靈。有關其他信息,我正在使用glTranslate來移動精靈。
是window_key的一個事件嗎?如果您註釋掉can_control if語句(只是一行:不是整個if語句),會發生什麼情況。 – cup
向我們展示整個方法或至少在哪裏獲得活動。 – olevegard
考慮使用if(type == SDL_KEYUP){...} else if(type SDL_KEYDOWN){..},因爲當你使用if時,即使第一個條件爲真,代碼也會測試第二個條件但是你永遠不會進入這個塊,因爲這個類型顯然不是SDL_KEYDOWN,它的性能更好。 – jordsti