类: Section (灯带分段)
约 1474 字大约 5 分钟
2026-09-06
构建固件和导入到JS
在 C++ 里加入以下代码, 然后重新编译构建固件:
// 为了控制固件的尺寸,BeShell 的 module 是按需引入的。
beshell.use<be::driver::ws2812b::WS2812B>() ;Section 类由 ws2812b 模块提供:
import { Section } from 'ws2812b'简介
灯带分段
描述灯带上的一段:起始位置、主体长度、起/终点 HSV 颜色、各分量的过渡缓动, 以及前驱(索引减小方向)/后续(索引增大方向)明度衰减的阴影。主体上色相沿最短弧插值,三个分量(H/S/V) 可分别指定缓动类型;len 为 1 时退化为点(仅使用起点色)。
全部数值属性既可由 JS 直接读写,也可被 Rainbow 的关键帧动画逐帧驱动; 回环(loop)灯带上 x 超出灯带长度时自动取模套圈。
示例:
import { Strip, Section } from "ws2812b"
const strip = new Strip()
strip.setup({ pin: 8, length: 30 })
const sec = new Section({
x: 0, len: 8,
h0: 0, s0: 1, v0: 1, // 起点:红
h1: 360, s1: 1, v1: 1, // 终点:绕色相环一圈
easeH: "inOutSine",
shadowFront: 3, shadowFrontEase: "outQuad",
shadowBack: 2
})
strip.clear()
sec.draw(strip) // 手动绘制(不含 clear/flush)
strip.flush()类属性
属性 x
类型: number
分段起始位置(像素索引,可为小数,绘制时四舍五入)
回环(loop)灯带上绘制时自动对灯带长度取模套圈。
属性 len
类型: number
主体长度(像素数,>=1),为 1 时退化为点(终点 HSV 无意义)
属性 h0
类型: number
起点色相(0-360,绘制时自动回卷)
属性 s0
类型: number
起点饱和度(0-1)
属性 v0
类型: number
起点明度(0-1)
属性 h1
类型: number
终点色相(0-360),主体内沿最短弧从 h0 过渡到 h1
属性 s1
类型: number
终点饱和度(0-1)
属性 v1
类型: number
终点明度(0-1)
属性 shadowFront
类型: number
前驱阴影长度(像素数):索引减小方向(x 之前),取起点色、明度衰减至 0
属性 shadowBack
类型: number
后续阴影长度(像素数):索引增大方向(主体末尾之后),取终点色、明度衰减至 0
属性 easeH
类型: string
色相过渡缓动类型名称(如 "linear"、"inOutSine"),见 animator 模块 tween 库
属性 easeS
类型: string
饱和度过渡缓动类型名称
属性 easeV
类型: string
明度过渡缓动类型名称
属性 shadowFrontEase
类型: string
前驱阴影(索引减小方向)的明度衰减缓动类型名称
属性 shadowBackEase
类型: string
后续阴影(索引增大方向)的明度衰减缓动类型名称
类方法
方法 constructor
原型: constructor (config:object=)
构造函数
创建分段实例,可用配置对象初始化属性。
示例:
const sec = new Section({
x: 0, len: 8,
h0: 0, h1: 360, // 彩虹渐变
easeH: "inOutSine",
shadowFront: 3, shadowFrontEase: "outQuad"
})参数:
config
类型object
默认值
参数说明初始配置(属性见类说明)
返回值:
类型Section
说明分段实例
方法 draw
原型: draw (strip:Strip=)
绘制分段
将分段绘制到 strip(内部调用 strip.setPixelHSV,不含 clear/flush)。 通常不需要手动调用——加入 Rainbow 后由 timeline 的 change 事件自动驱动重绘。
参数:
strip
类型Strip
默认值
参数说明目标灯带,缺省为 Rainbow 绑定的 strip
异常:
- 分段未绑定 strip 且未显式传入时抛出异常
返回值:
类型undefined
方法 exportConfig
原型: exportConfig ()
导出分段配置
返回可 JSON 序列化的配置对象(含全部数值属性与缓动名)。
返回值:
类型object
说明配置对象
方法 importConfig
原型: importConfig (config:object)
导入分段配置
从配置对象恢复属性(缺省字段保持当前值)。
参数:
config
类型object
参数说明配置对象
返回值:
类型undefined
