Метод update()
вызывается один раз за кадр.Целевые кадры по умолчанию в секунду (fps
) в играх Phaser: 60 - Справочник по API .
Многие факторы в вашей игре могут влиять на фактический fps
, который вы увидите.Если вы оставите его по умолчанию, ваш метод update()
будет вызываться примерно 60 раз в секунду.Если вы хотите, чтобы пользователь действительно мог видеть каждое изображение, это, вероятно, нежелательное поведение.
Вы можете уменьшить целевое число fps
в конфигурации игры, например:
{
type: Phaser.AUTO,
...,
fps: {
target: 30 // 30x per second
}
}
... но это может быть несовершенным.Это глобальное изменение скорости обновления вашей игры, и возможны другие вещи, которые вы хотите выполнить 60 раз в секунду (например, проверка ввода и т. Д.).
Чтобы изменить частоту смены изображений без изменения fps
в вашей игре, рассмотрите возможность создания отдельного метода для обработки уничтожения / создания изображений и ссылки на этот метод внутри update()
.
function update() {
if (!changingImage) {
changingImage = true;
changeImage();
}
}
function changeImage() {
if (roulette.circle.previousCircle) {
roulette.circle.previousCircle.destroy()
}
if (roulette.circle.previousLever) {
roulette.circle.previousLever.destroy();
}
if (roulette.circle.currentStep === 100 && run) {
ball.run = true;
}
let circle = this.add.image(108, 110, `circle${roulette.circle.currentStep}`).setOrigin(0, 0).setScale(0.7);
let lever = this.add.image(200, 150, `lever${roulette.lever.currentStep}`).setOrigin(0, 0).setScale(0.7);
roulette.circle.method();
roulette.lever.method();
roulette.circle.previousCircle = circle;
roulette.circle.previousLever = lever;
changeImage = true;
}
Если это все еще происходит слишком быстро, рассмотрите возможность включения логического значения changeImage
в тайм-аут, чтобы еще больше отсрочить частоту обновления ваших изображений.
setTimeout(() => {
changingImage = true;
}, 1000);