0

我正在使用 CreateJS 编写游戏并使用 CocoonJS 进行分发。CocoonJS API 中有几个监听器函数,允许在游戏暂停和恢复时进行回调。游戏的计时器和(基于时间的)动画由 Ticker 事件的“delta”属性驱动。我目前遇到的问题是,在暂停之后恢复游戏时,计时器将从暂停的时间加上暂停时花费的时间开始计时。例如,我在 20 秒后暂停游戏正好 4 秒,在恢复游戏时,计时器将从 24 秒开始(不是 20 秒,这是预期的)。我尝试在暂停之前存储ticker事件的“runTime”属性,然后尝试将ticker事件的“runTime”设置为恢复时存储的值,

我的原始代码片段(修补之前)如下所示:

createjs.Ticker.setFPS(60);
createjs.Ticker.on("tick", onTick, this);

Cocoon.App.on("activated", function() {
    console.log("---[[[[[ APP RESUMING ]]]]]---");
    createjs.Ticker.paused = false;
});

Cocoon.App.on("suspending", function() {
    console.log("---[[[[[ APP PAUSING ]]]]]---");
    createjs.Ticker.paused = true;
});

onTick = function (e) {
    if (!e.paused) {
        animateUsingTicker(e.deltaTime);
        countDownTimerUsingTicker(e.deltaTime);
        //etc...
        stage.update();
    }
};

有人可以帮助我吗?

非常感谢

4

1 回答 1

0

处理此问题的一种非常简单的方法是使用Timer.maxDelta. 例如,如果您的目标是 60fps,您可以将其设置为 32ms(预期增量的两倍),以防止在恢复应用程序/游戏时返回巨大的值。

于 2015-03-01T17:01:49.713 回答