概览
本指南介绍 PicoPixel 精灵控件的基本用法:它是什么、何时使用、如何创建、如何响应界面事件,以及如何在其他项目中复用。
无需动画制作经验,只要会拖放图片,就可以开始。
什么是精灵?
精灵(Sprite)是一个包含多种动画的 PicoPixel 控件,可以按需切换播放。每段动画称为一种模式或状态,例如 Idle(待机)、Running(奔跑)或 Happy(开心)。
可以把它想成游戏角色:屏幕上始终是同一个角色,但会根据情况走路、跳跃或挥手。精灵也是如此,一个控件承载多种动作,由你决定何时播放。
通过事件编辑器,可以让精灵根据条件切换状态。例如为 ESP32 或其他 LVGL 应用制作动画角色或 Stack-chan 表情时,可以在一个精灵中设置 Running、Thinking、Failed 等模式,无需分别管理多个控件。
LVGL 本身没有原生的多状态精灵控件。PicoPixel 在 LVGL 动画图片控件的基础上实现了这一功能,并负责生成切换逻辑。
什么时候使用精灵?
可以按以下方式选择:
- 只显示一张静态图片:使用 Image 控件。
- 只循环播放一种动画,例如旋转的加载图标:使用 Animated Image,更简单也更轻量。
- 需要根据情况切换动画,例如任务完成时露出笑脸,或从待机切换为奔跑:使用 Sprite。
只要图形有多种动作或表情,并且需要在它们之间切换,就适合使用精灵。
如何创建精灵?
- 添加 Sprite 控件,在右侧边栏添加第一个模式,例如 Idle。为每个模式起一个清楚的名称,便于之后配置事件。
- 上传构成该模式的图片帧。图片按顺序播放,就会形成动画。可以调整该模式的播放时长:时长越长,动作越慢;时长越短,动作越快。
- 添加第二个模式。精灵至少需要两个模式;如果只需要一段动画,使用 Animated Image 更合适,见什么时候使用精灵?。
- 在 Events 标签中配置事件,根据条件切换模式,具体方法见下一节。
同一个精灵的所有模式中,每一帧都必须具有完全相同的宽度和高度。如果有的帧为 64×64,有的为 80×80,动画就无法正确对齐。请在上传前统一尺寸。
请合理控制帧数和图片尺寸。更多帧通常能让动画更流畅,更大的图片能呈现更多细节,但都会增加内存占用,尤其是在小型微控制器上。如果烧录后精灵无法显示,请参阅常见问题。
让精灵响应事件
精灵的作用在于根据情况切换动画。使用事件编辑器,可以配置“某件事发生时,切换到指定模式”。触发条件可以是按钮点击、数值变化或定时器等。
例如:
- 精灵默认播放 Idle。
- 添加一个事件,在按钮按下时切换到 Running。
- 再添加一个事件,在任务完成时切换到 Happy,或返回 Idle。
这样无需手写动画代码,精灵就能响应用户操作。你可以继续添加事件,丰富角色的表现。
先用两个模式验证切换效果,在预览中确认无误后,再逐步添加更多模式。
常见问题
烧录到设备后,精灵不显示。
- 最常见的原因是内存不足。设备需要足够的 RAM 来存放图片帧。
- 可用内存由开发板及 LVGL 配置决定,需要在固件项目中调整。
- 导出的
README.md会说明相关要求,可以让 AI 编程助手参考它,帮助调整 SDK 或 LVGL 配置。
动画帧错位或跳动。
- 检查所有模式中的每一帧,确保尺寸完全一致。即使只差几个像素,也会影响对齐。
动画太快或太慢。
- 调整对应模式的播放时长。每个模式独立设置,可能需要分别修改。
无法保存,提示需要再添加一个模式。
- 精灵至少需要两个模式。请添加第二个模式,或改用 Animated Image 控件。