From 210eca6fa1fc86cd016327407ab27a5532454ddc Mon Sep 17 00:00:00 2001 From: liyunze <50455574+liyunze-coding@users.noreply.github.com> Date: Wed, 16 Aug 2023 22:49:06 +0800 Subject: [PATCH] fixed instant animation cancel --- scripts/taskList.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/scripts/taskList.js b/scripts/taskList.js index b09e7d5..5c3db54 100644 --- a/scripts/taskList.js +++ b/scripts/taskList.js @@ -851,11 +851,7 @@ async function checkToAnimate() { scrolling = true; - await sleep(scrollingSpeed); - - scrolling = false; - renderTaskListToDOM(); - checkToAnimate(); + addAnimationListeners(); } } else if (!scrolling) { document.querySelector(".secondary").style.display = "none"; @@ -866,9 +862,28 @@ async function checkToAnimate() { } } +function addAnimationListeners() { + if (primaryAnimation) { + primaryAnimation.addEventListener("finish", animationFinished); + primaryAnimation.addEventListener("cancel", animationFinished); + } + if (secondaryAnimation) { + secondaryAnimation.addEventListener("finish", animationFinished); + secondaryAnimation.addEventListener("cancel", animationFinished); + } +} + +function animationFinished() { + scrolling = false; + renderTaskListToDOM(); + checkToAnimate(); +} + function cancelAnimation() { - if (primaryAnimation && secondaryAnimation) { + if (primaryAnimation) { primaryAnimation.cancel(); + } + if (secondaryAnimation) { secondaryAnimation.cancel(); } scrolling = false;