我正在尝试为我在Qt + OpenGL中开发的游戏实现暂停按钮。
我想使用QTimer实现它。 基本上我每100ms更新一次屏幕。所以为了暂停游戏,我会在按下按钮时停止计时器。当再次按下按钮时,我将再次启动计时器
这是我的pauseOrPlay SLOT:
void Window::pauseOrPlay()
{
GLWidget::modifyTimer = TRUE;
GLWidget::isPaused = !GLWidget::isPaused;
GLWidget timerUpdater;
timerUpdater.timerFunc();
}
这是我的timerFunc()
GLvoid GLWidget::timerFunc()
{
static QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
if( GLWidget::isPaused)
timer->start(100);
else
timer->stop();
}
但我没有得到这个功能。我在这个特定的代码上暂停了屏幕,在这里和那里尝试了几个调整时,有时我会快速地进行屏幕更新,这使我指向this,但我无法找到解决问题的方法不知何故
任何帮助或指针?
PS:在这个问题上没有关于OpenGL的内容,但我认为那些可能已经处理类似思考的人,添加了OpenGL标签答案 0 :(得分:1)
这种联系处于不利地位。每次暂停或恢复游戏时,都会将其设置为连接。但是如果你多次连接,你的插槽将被称为每个信号发射的多个瓦片。
确保只创建计时器并连接一次。我建议将计时器结构和信号连接移动到你的GLWidget的构造函数中。将指向计时器的指针存储为类的成员变量,以便可以在类的成员函数中启动和停止它。