diff --git a/src/Global/efflect/Sunshine/timeLIne.js b/src/Global/efflect/Sunshine/timeLIne.js index a012f69..4801a04 100644 --- a/src/Global/efflect/Sunshine/timeLIne.js +++ b/src/Global/efflect/Sunshine/timeLIne.js @@ -53,17 +53,25 @@ export default class TimeLine { document.getElementById('timePause').addEventListener('click', function () { that.pauseed = !that.pauseed; - if (that.pauseed) { + if (that.pauseed) {//暂停 document.getElementById('timePause').textContent = '播放'; that.animationId && cancelAnimationFrame(that.animationId); that.pausedTime = Date.now(); // 记录暂停时刻 that.sdk.viewer.clock.shouldAnimate = false - } else { + } else {//播放 document.getElementById('timePause').textContent = '暂停'; that.manualPosition = null - const pausedDuration = Date.now() - that.pausedTime; that.startTime += pausedDuration; // 补偿暂停期间的时间差 + + if (that.changeDate) {//切换日期后让时间从0开始 + if (that.changeDateGrag) { + that.changeDateGrag = undefined + } else { + that.startTime = Date.now() + } + that.changeDate = undefined + } that.sdk.viewer.clock.shouldAnimate = true that.update(); // 重启动画循环 } @@ -77,7 +85,7 @@ export default class TimeLine { // that.sdk.viewer.clock.shouldAnimate = true that.startTime = Date.now() - (that.manualPosition * 86400 * 1000 / that.speed); that.manualPosition = null; - + that.changeDate && (that.changeDateGrag = true) if (!that.pauseed) { that.update() func(that.time) @@ -98,30 +106,55 @@ export default class TimeLine { update() { if (this.manualPosition !== null) return; - - const elapsed = (Date.now() - this.startTime) * this.speed; - const totalSeconds = elapsed / 1000; - const daySeconds = totalSeconds % 86400; + if (this.changeDate) {//切换日期后让时间从0开始 + this.startTime = Date.now() + } + let elapsed = (Date.now() - this.startTime) * this.speed; + // if (this.elapsed) { + // elapsed = elapsed + this.elapsed + // this.elapsed = undefined + // } + const totalSeconds = elapsed / 1000;//秒 + const daySeconds = totalSeconds % 86400;//天 const percentage = daySeconds / 86400; this.progress.style.width = `${percentage * 100}%`; this.time = this.formatTime(daySeconds) this.currentTime.textContent = this.time; - this.animationId = requestAnimationFrame(this.update); + if (!this.pauseed) { + this.animationId && cancelAnimationFrame(this.animationId); + this.animationId = requestAnimationFrame(this.update); + } } setSpeed(v) { - const currentProgress = this.manualPosition ?? - (Date.now() - this.startTime) * this.speed / (86400 * 1000); + if (!this.pauseed) { + const currentProgress = this.manualPosition ?? + (Date.now() - this.startTime) * this.speed / (86400 * 1000); + this.speed = v; + this.startTime = Date.now() - (currentProgress * 86400 * 1000 / this.speed); - this.speed = v; - this.startTime = Date.now() - (currentProgress * 86400 * 1000 / this.speed); + } else { + let pausedDuration = Date.now() - this.pausedTime; + this.startTime += pausedDuration; // 补偿暂停期间的时间差 + + const currentProgress = this.manualPosition ?? + (Date.now() - this.startTime) * this.speed / (86400 * 1000); + this.speed = v; + this.startTime = Date.now() - (currentProgress * 86400 * 1000 / this.speed); + + this.pausedTime = Date.now(); // 记录切换speed暂停时刻 + this.speed = v; + } this.manualPosition = null; - this.update(); + + // this.update(); } updateTime() { - this.startTime = Date.now() - (this.manualPosition * 86400 * 1000 / this.speed); this.manualPosition = null; + this.startTime = Date.now() - ((this.manualPosition || 0) * 86400 * 1000 / this.speed); + this.pauseed && (this.changeDate = true) + this.changeDateGrag = undefined this.update(); } clear() {