我实现了一个如何在JavaScript中暂停时间的示例。这个例子是http://jsfiddle.net/suska/n4g5U/
// Update of Date class to modify getTime method.
Date.prototype.origGetTime = Date.prototype.getTime;
Date._lastPausedAt;
Date._stopDuration = 0;
Date.prototype.getTime = function() {
if (Date._lastPausedAt) {
return Date._lastPausedAt.origGetTime() - Date._stopDuration;
}
return new Date().origGetTime() - Date._stopDuration;
};
Date.isPaused = function() {
return Date._lastPausedAt != null;
};
Date.pause = function() {
if (!Date._lastPausedAt) {
Date._lastPausedAt = new Date();
}
};
Date.unpause = function() {
if (Date._lastPausedAt) {
Date._stopDuration += new Date().origGetTime() - Date._lastPausedAt.origGetTime();
Date._lastPausedAt = null;
}
};
任何想法如何修改示例以减慢速度并加快功能?
答案 0 :(得分:5)
在dooxe的答案上写了一个变体,以避免在时间扭曲之间发生突然跳跃。
var milli = Date.prototype.getTime;
var lastTime = (new Date).getTime();
var curTime = 0;
Date.prototype.getTime = function(){
var actualTime = milli.call(this);
curTime += (actualTime - lastTime) * Date._speed;
lastTime = actualTime;
return curTime;
};
答案 1 :(得分:1)
这是一个'覆盖'Date.getTime
函数的技巧:
var milli = Date.prototype.getTime;
Date.prototype.getTime = function(){
return milli.call(this) * 5;
};
使用低于1的因子(我的代码中为5)来减慢时间: