У меня есть приложение, написанное в QT, которое использует QTimer. Это в основном игра, и все действия контролируются таймером. Игра включает в себя способность увеличивать \ уменьшать скорость игры. Код увеличения скорости являетсяQTimer setInterval без сброса оставшегося времени
timerValue -= speedUpValue;
if (timerValue < maxSpeed) {
timerValue = maxSpeed;
}
timer -> setInterval(timerValue);
speedUpValue
и maxSpeed
константы. Для уменьшения скорости используется почти тот же код. Проблема в том, что setInterval
сбрасывает внутренний таймер, и поэтому, если вы постоянно увеличиваете или уменьшаете скорость, игра в итоге никогда не будет продолжаться, потому что remainingTime
постоянно сбрасывается. Есть ли способ установить remainingTime
вручную или изменить интервал, не перезагружая его?
Нет, нет возможности изменить интервал без автоматического перезапуска таймера. Однако вы можете добиться аналогичного эффекта, только обновляя интервал, когда таймер истечет. –