使用 GLUT 用键停止动画?
Posted
技术标签:
【中文标题】使用 GLUT 用键停止动画?【英文标题】:Stopping animation with a key using 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 函数来停止动画。
【问题讨论】:
【参考方案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)
注册回调。
【讨论】:
以上是关于使用 GLUT 用键停止动画?的主要内容,如果未能解决你的问题,请参考以下文章