使用 GLUT 按键停止动画?
Stopping animation with a key using GLUT?
我设计了一个在坐标 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 函数来停止动画。
创建一个 glutKeyboardFunc()
回调来切换 isAnimating
布尔值。然后检查 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()
}
}
不要忘记在调用 glutMainLoop()
之前通过 glutKeyboardFunc(keyboard)
注册回调。
我设计了一个在坐标 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 函数来停止动画。
创建一个 glutKeyboardFunc()
回调来切换 isAnimating
布尔值。然后检查 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()
}
}
不要忘记在调用 glutMainLoop()
之前通过 glutKeyboardFunc(keyboard)
注册回调。