使用GLUT使用键停止动画吗?

时间:2018-10-25 15:12:06

标签: c++ animation opengl glut

我设计了一个UFO,它的坐标为x。但是,我想停止动画-我的意思是按空格键时增加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功能来停止动画。

1 个答案:

答案 0 :(得分:1)

创建一个glutKeyboardFunc()回调以切换isAnimating bool。然后在isAnimating中检查onTimer()

例如:

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()
    }
}

在致电glutKeyboardFunc(keyboard)之前的某个时候,别忘了通过glutMainLoop()注册回调。