动画

## 概念 我们可以设定对象的开始状态和结束状态,随后可以通过动画来实现中间的过渡效果。 动画实际上是通过定期调用带有 value 参数的 animator 函数来实现的。函数原型如下: ```lua func(var, value) ``` 该原型与 LVGL 的大多数设置功能兼容。例如 `lvgl.obj_set_x(obj,value)` 或 `lvgl.obj_set_width(obj,value)` ## 创建动画 要创建动画,必须初始化 lvgl.anim_t,并使用 lvgl.anim_set_...() 函数进行配置。 ```lua anim = lvgl.anim_t() lvgl.anim_set_values(anim, -lvgl.obj_get_height(btn), lvgl.obj_get_y(btn), lvgl.ANIM_PATH_OVERSHOOT) lvgl.anim_set_time(anim, 300, -2000) lvgl.anim_set_repeat(anim, 500) lvgl.anim_set_playback(anim, 500) lvgl.anim_set_exec_cb(anim, btn, set_y) lvgl.anim_create(anim) ``` ## 设置路径 可以设置 动画的路径。在最简单的情况下,它是线性的,这意味着起始值和结束值之间的数值线性变化。路径主要是根据动画的当前状态计算要设置的下一个值的功能。当前,有以下内置路径功能: ```lua lvgl.anim_path_linear -- 线性动画 lvgl.anim_path_step -- 一步到位 lvgl.anim_path_ease_in -- 渐进效果 lvgl.anim_path_ease_out -- 渐退效果 lvgl.anim_path_ease_in_out -- 渐进和渐退效果 lvgl.anim_path_overshoot -- 超出最终值 lvgl.anim_path_bounce -- 从最终值反弹一点(就像撞墙一样) ``` ## 速度与时间 默认情况下,可以设置动画时间。但是,在某些情况下,动画速度更加实用。 `lvgl.anim_speed_to_time(speed, start, end)` 函数以毫秒为单位计算从给定速度的起始值到结束值所需的时间。速度以单位/秒为单位进行解释。例如, `lvgl.anim_speed_to_time(20,0,100)` 将给出 5000 毫秒。例如,在 `lvgl.obj_set_x` 单位为像素的情况下,因此 20 表示20 px/sec 的速度。 ## 删除动画 可以通过提供 animation 指针及其函数来删除动画。 ```lua lvgl.anim_del(var,func) ```