1

我正在尝试为我在 Qt + OpenGL 中开发的游戏实现暂停按钮。

我想使用 QTimer 来实现它。基本上我每 100 毫秒更新一次屏幕。所以为了暂停游戏,我会在按钮按下时停止计时器。当再次按下按钮时,我将再次启动计时器

这是我的 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();

}

但我没有得到这个功能。我在这个特定的代码上暂停了屏幕,并且在这里和那里尝试了一些调整,有时我的屏幕更新非常快,指向了我,但我无法以某种方式找到解决我的问题的方法

任何帮助或指针?

PS:在这个问题中没有关于 OpenGL 的内容,但我认为那些可能已经处理过类似想法的人,添加 OpenGL 标签

4

1 回答 1

1

这种联系很糟糕。您已将其设置为在每次暂停或恢复游戏时进行连接。但是,如果您多次连接,您的插槽将被称为每个信号发射的多个瓦片。

确保只创建计时器并连接一次。我建议将计时器构造和信号连接移到 GLWidget 的构造函数中。将指向计时器的指针存储为类的成员变量,以便您可以在类的成员函数中启动和停止它。

于 2013-03-27T16:39:25.710 回答