大多数 Blockly 应用使用各种积木块颜色,以直观的方式将积木块分组到类别中。Blockly 提供的屏蔽包括多个类别, 与演示中各种工具栏类别所反映的颜色相对应:
此功能块上的其他颜色均派生自主色。例如: 影子块是 主色的饱和度版本,而边框颜色则是较深的版本。
设置屏蔽区域颜色
您可以使用 JSON 或 JavaScript 表示法定义块颜色:
JSON
{
// ...,
"colour": 160,
}
JavaScript
init: function() {
// ...
this.setColour(160);
}
请注意采用的是英国拼写法。如果未能设置颜色,则会导致黑块。
颜色格式
colour
值可以采用 HSV 或十六进制格式。
色调-饱和度-明度
定义某个分块的颜色最简单的方法是使用一个介于 0 到 360 之间的数字,在色调-饱和度-值 (HSV) 颜色模型中定义该分块的色调。
使用 HSV 并设置饱和度和适用于所有色块颜色的固定值, 为色块使用一种颜色,同时确保所有色块的色彩协调一致。
您可以通过调用以下函数,针对每种应用调整饱和度和值:
Blockly.utils.colour.setHsvSaturation(0.45) // 0 (inclusive) to 1 (exclusive), defaulting to 0.45
Blockly.utils.colour.setHsvValue(0.65) // 0 (inclusive) to 1 (exclusive), defaulting to 0.65
许多颜色选择器都提供 HSV 颜色空间,例如 HSV 选择器。进入 Blockly 的
saturation 和值常量(默认值分别为 45% 和 65%),则
将色调滑动到选定的颜色。将此色调数值用作 colour
值。
十六进制
强烈建议使用 HSV 颜色空间,但 Blockly 支持色块
以十六进制 #RRGGBB
表示的颜色。虽然这样有助于
与其他应用颜色(例如 CSS 中的样式)协调一致
应用(例如Photoshop)存在设计风险,
如果没有仔细选择,就会出现未协调的块。
除非您有专门的视觉设计资源,否则, HSV 颜色空间限制值。如果您尝试以这种方式重新定义所有颜色,不妨参阅 Google 的 Material Design 颜色资源。
颜色参考
通常,多个块会使用相同的颜色,集中定义颜色有助于简化颜色管理并添加正确颜色的新块。区块颜色可以使用字符串表格 参考资料 要做到这一点。
Blockly 包含字符串表中的九种颜色常量,对应于 工具箱类别,外加不同的动态变量颜色:
'%{BKY_LOGIC_HUE}'
'%{BKY_LOOPS_HUE}'
'%{BKY_MATH_HUE}'
'%{BKY_TEXTS_HUE}'
'%{BKY_LISTS_HUE}'
'%{BKY_COLOUR_HUE}'
'%{BKY_VARIABLES_HUE}'
'%{BKY_VARIABLES_DYNAMIC_HUE}'
'%{BKY_PROCEDURES_HUE}'
这些字符串值既可用于 JSON 定义,也可用于 block.setColour(..)
。
您可以通过将以下代码添加到 Blockly.Msg
来添加自己的颜色常量:
// Define the colour
Blockly.Msg.EVERYTHING_HUE = 42;
// Use in a block or block definition:
block.setColour('%{BKY_EVERYTHING_HUE}');
在本地化字符串表中存储颜色似乎不寻常, 非常方便,因为 JSON 表示法已支持引用。此外,您还可以根据需要本地化颜色。
无障碍功能问题
Blockly 通过颜色来明确提示每个方块的作用 组合在一起。对于包含的块,此功能次于块上的文本,因此不是关键属性。不过,如果选择 色块配色工具,色盲用户也应考虑这一点。
Blockly 为 主题 以适应某些类型的色觉缺陷。 页面包含示例 7、12 和 15 色 这些调色板尝试最大程度地区分最常见的 色盲。请注意,这不会映射到 7、12 或 15 个屏蔽类别 ,因为某些阴影应保留用于阴影块和字段。