diff --git a/src/services/editor/editor-drawers.ts b/src/services/editor/editor-drawers.ts index 18320f0..b4fb09d 100644 --- a/src/services/editor/editor-drawers.ts +++ b/src/services/editor/editor-drawers.ts @@ -85,11 +85,26 @@ function drawElevatorIcon( ctx.fillStyle = gradient; ctx.fillRect(x, y, width, height); - // 电梯内框 - 深金属色 + // 电梯内框 - 根据门状态调整内部颜色 const innerGradient = ctx.createLinearGradient(x + 2, y + 2, x + width - 2, y + height - 2); - innerGradient.addColorStop(0, '#374151'); - innerGradient.addColorStop(0.5, '#1f2937'); - innerGradient.addColorStop(1, '#111827'); + + // 根据门状态调整内部背景 + let innerColor1, innerColor2, innerColor3; + if (doorStatus === 3) { + // 门完全打开,内部显示明亮的白色调,表示门已开 + innerColor1 = '#fefefe'; // 几乎白色 + innerColor2 = '#f8fafc'; // 极浅灰白 + innerColor3 = '#f1f5f9'; // 浅灰白色 + } else { + // 门关闭或开关中,保持深金属色 + innerColor1 = '#374151'; // 深金属色 + innerColor2 = '#1f2937'; // 更深金属色 + innerColor3 = '#111827'; // 最深金属色 + } + + innerGradient.addColorStop(0, innerColor1); + innerGradient.addColorStop(0.5, innerColor2); + innerGradient.addColorStop(1, innerColor3); ctx.fillStyle = innerGradient; ctx.fillRect(x + 2, y + 2, width - 4, height - 4); @@ -114,11 +129,21 @@ function drawElevatorIcon( const doorY = y + 4; const doorGap = doorWidth * doorProgress; // 两扇门之间的间隙 - // 保持金属质感,不根据运动状态改变门的颜色 - const doorColor1 = '#94a3b8'; // 浅金属蓝灰 - const doorColor2 = '#64748b'; // 中金属蓝灰 - const doorColor3 = '#475569'; // 深金属蓝灰 - const doorColor4 = '#334155'; // 最深金属蓝灰 + // 根据门开合状态调整门的颜色 + let doorColor1, doorColor2, doorColor3, doorColor4; + if (doorProgress > 0.5) { + // 门打开状态超过50%,使用偏白色系表示门已开 + doorColor1 = '#f8fafc'; // 非常浅的灰白色 + doorColor2 = '#f1f5f9'; // 浅灰白色 + doorColor3 = '#e2e8f0'; // 中浅灰白色 + doorColor4 = '#cbd5e1'; // 灰白色 + } else { + // 门关闭或半开状态,保持金属质感 + doorColor1 = '#94a3b8'; // 浅金属蓝灰 + doorColor2 = '#64748b'; // 中金属蓝灰 + doorColor3 = '#475569'; // 深金属蓝灰 + doorColor4 = '#334155'; // 最深金属蓝灰 + } // 绘制左门 - 金属门质感(无门把手) if (doorWidth - doorGap / 2 > 0) {