我正在使用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();
}
};
有人可以帮我解决这个问题吗?
非常感谢
答案 0 :(得分:0)
一个非常简单的方法是使用Timer.maxDelta
。例如,如果您的目标是60fps,则可以将其设置为32ms(预期增量的两倍),以防止在恢复应用/游戏时获得巨大的值。