【问题标题】:Stopping animation with a key using GLUT?使用 GLUT 用键停止动画?
【发布时间】:2018-10-25 15:12:05
【问题描述】:

我设计了一个在坐标 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 函数来停止动画。

【问题讨论】:

    标签: c++ animation opengl glut


    【解决方案1】:

    创建一个切换 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) 注册回调。

    【讨论】:

      猜你喜欢
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多