我正在製作一個遊戲,其中我的玩家是一個精靈,它隨着我按下右鍵或向上鍵(跳轉和運行)而改變,因爲我在pressKeySpecial和releaseKeySpecial中編寫了「GlutPostRedisplay」。之後,我做了一些動畫,爲此我製作了一個使用GlutPostRedisplay的定時器功能(glutTimerFunc)。現在問題是當我按下右鍵時,我的播放器不斷在某個地方更改它的精靈圖像以「跑步」。我知道它是因爲我已經在計時器中設置了GlutPostRedisplay,因此它會繼續重新顯示精靈,但是如果我從定時器函數中刪除了GlutPostRedisplay,那麼其餘的動畫將停止並僅在按下該按鍵時才起作用。如何處理GlutPostRedisplay?
我很困惑在哪裏實際設置GlutPostRedisplay調用,以便我所有的動畫和播放器都能正常工作?我也嘗試過glutIdleFunc,但結果保持不變。
void pressKeySpecial(int key,int x,int y)
{
switch (key)
{
case GLUT_KEY_LEFT:
break;
case GLUT_KEY_RIGHT:
m.changePosition(10.0,0);
m.changeMode(Mario::RUN);
break;
case GLUT_KEY_UP:
if(m.pos_Y<12)
{
m.changePosition(0,9);
m.changeMode(Mario::JUMP);
}
break;
}
glutPostRedisplay();
}
// TIMER
void Timer(int value)
{
t +=205;
t1 +=705;
down -=5;
angle +=5;
SplashTimer +=1;
glutTimerFunc(30, Timer, 1);
//glutIdleFunc(Timer);
glutPostRedisplay();
}
顯示一些代碼,而不只是寫它。 –
@BogdanKuštan現在請檢查!剛剛嘗試過 –