mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-24 16:37:18 +08:00
fix(anim): play animations from their current progress (#9052)
This commit is contained in:
committed by
GitHub
parent
f876b99888
commit
87c9aa5f98
+18
-3
@@ -1143,15 +1143,30 @@ static void play_timeline_on_trigger_event_cb(lv_event_t * e)
|
||||
timeline_play_dsc_t * dsc = lv_event_get_user_data(e);
|
||||
LV_ASSERT_NULL(dsc);
|
||||
|
||||
/*Reset the progress only if the animation was finished*/
|
||||
uint16_t progress = lv_anim_timeline_get_progress(dsc->at);
|
||||
if(dsc->reverse) {
|
||||
lv_anim_timeline_set_progress(dsc->at, LV_ANIM_TIMELINE_PROGRESS_MAX);
|
||||
if(progress == 0) {
|
||||
lv_anim_timeline_set_progress(dsc->at, LV_ANIM_TIMELINE_PROGRESS_MAX);
|
||||
}
|
||||
|
||||
if(lv_anim_timeline_get_progress(dsc->at) == LV_ANIM_TIMELINE_PROGRESS_MAX) {
|
||||
lv_anim_timeline_set_delay(dsc->at, dsc->delay);
|
||||
}
|
||||
|
||||
lv_anim_timeline_set_reverse(dsc->at, true);
|
||||
}
|
||||
else {
|
||||
lv_anim_timeline_set_progress(dsc->at, 0);
|
||||
if(progress == LV_ANIM_TIMELINE_PROGRESS_MAX) {
|
||||
lv_anim_timeline_set_progress(dsc->at, 0);
|
||||
}
|
||||
|
||||
if(lv_anim_timeline_get_progress(dsc->at) == 0) {
|
||||
lv_anim_timeline_set_delay(dsc->at, dsc->delay);
|
||||
}
|
||||
|
||||
lv_anim_timeline_set_reverse(dsc->at, false);
|
||||
}
|
||||
lv_anim_timeline_set_delay(dsc->at, dsc->delay);
|
||||
lv_anim_timeline_start(dsc->at);
|
||||
}
|
||||
|
||||
|
||||
@@ -1049,16 +1049,31 @@ static void play_anim_on_trigger_event_cb(lv_event_t * e)
|
||||
return;
|
||||
}
|
||||
|
||||
/*Reset the progress only if the animation was finished*/
|
||||
uint16_t progress = lv_anim_timeline_get_progress(timeline);
|
||||
if(dsc->reverse) {
|
||||
if(progress == 0) {
|
||||
lv_anim_timeline_set_progress(timeline, LV_ANIM_TIMELINE_PROGRESS_MAX);
|
||||
}
|
||||
|
||||
if(lv_anim_timeline_get_progress(timeline) == LV_ANIM_TIMELINE_PROGRESS_MAX) {
|
||||
lv_anim_timeline_set_delay(timeline, dsc->delay);
|
||||
}
|
||||
|
||||
lv_anim_timeline_set_reverse(timeline, true);
|
||||
lv_anim_timeline_set_progress(timeline, LV_ANIM_TIMELINE_PROGRESS_MAX);
|
||||
}
|
||||
else {
|
||||
if(progress == LV_ANIM_TIMELINE_PROGRESS_MAX) {
|
||||
lv_anim_timeline_set_progress(timeline, 0);
|
||||
}
|
||||
|
||||
if(lv_anim_timeline_get_progress(timeline) == 0) {
|
||||
lv_anim_timeline_set_delay(timeline, dsc->delay);
|
||||
}
|
||||
|
||||
lv_anim_timeline_set_reverse(timeline, false);
|
||||
lv_anim_timeline_set_progress(timeline, 0);
|
||||
}
|
||||
|
||||
lv_anim_timeline_set_delay(timeline, dsc->delay);
|
||||
lv_anim_timeline_start(timeline);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user