diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useEntityAnimation.js b/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useEntityAnimation.js index 802b1b9..235c6b7 100644 --- a/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useEntityAnimation.js +++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useEntityAnimation.js @@ -120,7 +120,7 @@ export function useEntityAnimation() { viewer.clock.startTime = startTime.clone() viewer.clock.stopTime = stopTime.clone() viewer.clock.currentTime = startTime.clone() - viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP // 动画结束后停止 + viewer.clock.clockRange = Cesium.ClockRange.CLAMPED // 动画到达终点后停止,不循环 viewer.clock.multiplier = 1 // 实时速度 viewer.clock.shouldAnimate = true @@ -385,7 +385,7 @@ export function useEntityAnimation() { viewer.clock.startTime = startTime.clone() viewer.clock.stopTime = stopTime.clone() viewer.clock.currentTime = startTime.clone() - viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP + viewer.clock.clockRange = Cesium.ClockRange.CLAMPED // 动画到达终点后停止,不循环 viewer.clock.multiplier = 1 viewer.clock.shouldAnimate = true @@ -470,7 +470,12 @@ export function useEntityAnimation() { }) // 计算动画时长(使用速度倍数) - const speedMultiplier = options.speedMultiplier || 10 + // 装备移动速度更快(speedMultiplier 更大 = 动画时间更短 = 移动更快) + const baseSpeedMultiplier = options.speedMultiplier || 10 + const speedMultiplier = route.type === 'equipment' + ? baseSpeedMultiplier * 1.5 // 装备速度是人员的1.5倍 + : baseSpeedMultiplier // 人员保持原速 + const animationDuration = Math.min( Math.max(route.duration / speedMultiplier, 30), // 最小30秒 120 // 最大120秒 @@ -510,6 +515,14 @@ export function useEntityAnimation() { const icon = route.type === 'equipment' ? deviceIcon : soldierIcon const trailColor = route.type === 'equipment' ? Cesium.Color.ORANGE : Cesium.Color.CYAN + // 日志输出:显示每个实体的动画时长 + console.log( + `[useEntityAnimation] ${route.name} (${route.type}): ` + + `原始时长=${Math.round(route.duration)}秒, ` + + `速度倍数=${speedMultiplier.toFixed(1)}, ` + + `动画时长=${Math.round(animationDuration)}秒` + ) + // 创建动画实体 return viewer.entities.add({ availability: new Cesium.TimeIntervalCollection([ @@ -584,7 +597,7 @@ export function useEntityAnimation() { viewer.clock.startTime = startTime.clone() viewer.clock.stopTime = stopTime.clone() viewer.clock.currentTime = startTime.clone() - viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP + viewer.clock.clockRange = Cesium.ClockRange.CLAMPED // 动画到达终点后停止,不循环 viewer.clock.multiplier = 1 viewer.clock.shouldAnimate = true