我实现了一个如何在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;
}
};
Run Code Online (Sandbox Code Playgroud)
任何想法如何修改示例以减慢和加速功能?
在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;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3344 次 |
| 最近记录: |