使用 GLUT 使用键停止动画?

Stopping animation with a key using GLUT?

本文关键字:动画 GLUT 使用      更新时间:2023-10-16

我设计了一个在坐标x中加速的UFO。但是,我想停止动画 - 我的意思是当我按空格键时增加 x 坐标。

我将 x 和 y 坐标定义为全局变量。

int xB = 0, yB = 0;

而且,这是增量函数。

#if TIMER_ON == 1
void onTimer(int v) {
glutTimerFunc(TIMER_PERIOD / 30, onTimer, 0);
if (xB < (WINDOW_WIDTH / 2) - 80)
xB++;
if (xK < (WINDOW_WIDTH / 2) - 100)
xK += 2;
glutPostRedisplay(); // display()
}
#endif

我不知道我将使用哪个 GLUT 函数来停止动画。

创建一个切换isAnimating布尔值的glutKeyboardFunc()回调。 然后在onTimer()中检查isAnimating

例如:

bool isAnimating = true;
void keyboard( unsigned char key, int x, int y )
{
if( ' ' == key )
{
isAnimating = !isAnimating;
}
}
void onTimer(int v)
{
glutTimerFunc(TIMER_PERIOD / 30, onTimer, 0);
if( isAnimating )
{
if (xB < (WINDOW_WIDTH / 2) - 80)
xB++;
if (xK < (WINDOW_WIDTH / 2) - 100)
xK += 2;
glutPostRedisplay(); // display()
}
}

不要忘记在致电glutMainLoop()之前的某个时间通过glutKeyboardFunc(keyboard)注册回调。