Script Color 脚本颜色

Script Color(脚本颜色)是 Visual States(视觉状态)里的一种行为。它可用一段 JavaScript 同时驱动同一个组件的填充色、边框色和显示/隐藏,三个通道由脚本统一计算。当颜色不是简单的真/假切换(那种用 State Color 更合适),而是要按多个标签、数值区间或组合条件算颜色时,就用它。编辑器窗口标题是 Color Script Editor。

颜色

颜色: Script Color 脚本颜色

用一段脚本同时控制一个组件的填充色、边框色和可见性,适合颜色逻辑比简单真/假更复杂的情况。

它是什么、做什么用

Script Color(脚本颜色)是 Visual States(视觉状态)里的一种行为。它可用一段 JavaScript 同时驱动同一个组件的填充色、边框色和显示/隐藏,三个通道由脚本统一计算。当颜色不是简单的真/假切换(那种用 State Color 更合适),而是要按多个标签、数值区间或组合条件算颜色时,就用它。编辑器窗口标题是 Color Script Editor。

使用方法:编辑器里填的字段

把组件从右侧拖到左侧组件节点完成绑定后,双击打开编辑器,按这些区域填写:

  • General(常规):行为名称;组件名为只读,仅供确认绑定对象
  • Setup Script(即 Definition 准备区):读标签、定义变量、算中间值,提示语为“define fill, border, or visibility values”
  • Condition(条件):一个生效开关表达式,默认 true;为 true 时本行为才应用颜色
  • Output Channels(输出通道):Fill Color / Border Color / Visibility 三个通道,各自有独立的 Expression(表达式)框,并各带一个勾选框,只有勾选的通道才会被应用
  • Fill Color:返回填充色字符串,默认 "#22C55E";Border Color:返回边框色字符串,默认 "#000000";Visibility:返回 true/false
  • Quality Override(质量覆盖):勾选 Quality Border 后,质量好用 GOOD 颜色、质量坏用 BAD 颜色描边;还可勾选“Hide when quality is BAD”在通信质量坏时隐藏组件
// Setup Script (Definition)
var state = ReadTagInteger("Device.TAGNAME", 0);
var MyFillcolor = state === 1 ? "#22C55E" : "#EF4444";
var MyStrokecolor = "#000000";
var MyVisibility = true;

// Fill Color 表达式: MyFillcolor
// Border Color 表达式: MyStrokecolor
// Visibility 表达式: MyVisibility

适用场景

当一个组件要由脚本同时管多个视觉效果,或颜色取决于多个标签/条件组合时用它。两个典型场景:

  • 泵状态块:根据运行/报警两个标签同时改填充色和边框色,报警时还要闪现或隐藏
  • 多标签综合状态:颜色需要由几个数值和布尔量组合判断,单一的 State Color 或 Range Color 表达不了

边界与常见错误

几个常见配置误区:

  • Script Color 是“同步求值位”,要的是立刻算出的值:不要在表达式里放 fetch()、setTimeout、setInterval 等异步代码;这类逻辑放到 Setup Script
  • 多行逻辑、读标签、定义函数都放 Setup Script;三个 Output Channels 的表达式只返回最终结果
  • 只有勾选了对应通道(Fill/Border/Visibility)的表达式才会生效,没勾选的通道会被忽略
  • Quality Border 和“Hide when quality is BAD”依据的是通信质量(good/bad),不是过程值本身;质量坏时不应继续按有效值显示
Script Color 脚本颜色编辑器
图示 1: Script Color 编辑器

用一段脚本同时算出填充色、边框色和可见性三个输出通道。