动画
允许在显示屏上使用动画图像。动画组件继承图像组件的所有选项。
它添加了额外的 lambda 方法:next_frame()、prev_frame() 和 set_frame() 来更改显示的 GIF 图片。
animation: - file: "animation.gif" id: my_animation resize: 100x100 type: RGB565动画可以像图像组件一样使用显示组件的 image() 函数进行渲染。
要显示动画的下一帧,调用 id(my_animation).next_frame(),要显示上一帧,使用
id(my_animation).prev_frame()。要显示特定帧,使用 id(my_animation).set_frame(int frame)。
这可以与所有 Lambda 结合使用:
display: - platform: ... # ... lambda: |- //推进显示动画帧 id(my_animation).next_frame(); // 在位置 [x=0,y=0] 绘制动画 my_animation it.image(0, 0, id(my_animation), COLOR_ON, COLOR_OFF);此外,您可以使用 animation.next_frame、animation.prev_frame 或 animation.set_frame 动作。
NOTE
要独立于显示绘制周期来绘制下一帧动画,可以使用 interval(定时器):
interval: - interval: 5s then: animation.next_frame: my_animation-
file (必需, string):GIF 文件的路径(相对于 .yaml 文件的位置)。
-
id (必需, ID):用于在显示代码中引用动画的 ID。
-
resize (可选, string):如果设置,将调整所有帧的大小以适应给定尺寸
WIDTHxHEIGHT,并保持纵横比。 -
type (必需):指定如何在内部编码图像。有关更多信息,请参阅 图像组件。
-
BINARY:两种颜色,适用于单色显示屏或彩色显示屏中的双色图像。每像素使用 1 位,每字节 8 像素。仅支持chroma_key透明度。 -
GRAYSCALE:完整灰度。每像素使用 8 位,每字节 1 像素。 -
RGB565:有损 RGB 颜色存储。每像素使用 2 字节,带 alpha 通道时为 3 字节。 -
RGB:完整 RGB 颜色存储。每像素使用 3 字节,带 alpha 通道时为 4 字节。
-
-
transparency (可选):如果设置,将考虑输入图像的 alpha 通道。可能的值包括
opaque(默认)、chroma_key和alpha_channel。请参阅 图像组件 中关于透明度的讨论。 -
loop (可选):如果您想循环播放动画的一部分(例如火焰动画,火焰”开始”、然后”燃烧”然后”熄灭”),可以指定一些帧进行循环。
- start_frame (可选, int):当到达
end_frame时循环返回的帧。默认为动画的第一帧。 - end_frame (可选, int):循环中显示的最后一帧;当到达此帧时,将循环返回到
start_frame。默认为动画的最后一帧。 - repeat (可选, int):指定循环运行的次数。当达到计数时,动画将继续播放
end_frame之后的下一帧,或者如果end_frame是最后一帧,则从头开始。默认为”永远循环”。
- start_frame (可选, int):当到达
animation.next_frame 动作
Section titled “animation.next_frame 动作”将动画推进到下一帧。这相当于
id(my_animation).next_frame(); lambda 调用。
- id (必需, ID):要操作的动画 ID。
animation.prev_frame 动作
Section titled “animation.prev_frame 动作”将动画返回到上一帧。这相当于
id(my_animation).prev_frame(); lambda 调用。
- id (必需, ID):要操作的动画 ID。
animation.set_frame 动作
Section titled “animation.set_frame 动作”将动画设置到特定帧。这相当于
id(my_animation).set_frame(frame); lambda 调用。
- id (必需, ID):要操作的动画 ID。
- frame (必需, int):接下来要显示的帧索引。