feat(editor): 根据电梯门状态动态调整图标内部和门的颜色,门完全打开时显示明亮色调以增强视觉反馈

This commit is contained in:
xudan 2025-12-15 16:40:29 +08:00
parent 42716cac17
commit cca3709f6b

View File

@ -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) {