从暂停时间开始恢复游戏

时间:2015-02-27 05:16:03

标签: easeljs createjs timedelta ticker cocoonjs

我正在使用CreateJS编写游戏并使用CocoonJS进行分发。在CocoonJS API中有几个监听器功能,允许在暂停和恢复游戏时进行回调。游戏的计时器和(基于时间的)动画由Ticker事件的“delta”属性驱动。我现在遇到的问题是,在暂停之后恢复游戏时,计时器将从暂停时加上暂停所花费的时间开始。例如,我在20秒后暂停游戏正好4秒,在恢复游戏时计时器将从24秒(不是20秒,这是预期的)继续进行。我已经尝试在暂停之前存储股票代码事件的“runTime”属性,并尝试在恢复时将股票代码事件的“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();
    }
};

有人可以帮我解决这个问题吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

一个非常简单的方法是使用Timer.maxDelta。例如,如果您的目标是60fps,则可以将其设置为32ms(预期增量的两倍),以防止在恢复应用/游戏时获得巨大的值。