修复animator设置的period不生效问题
authorSnickerSun <snickersun@163.com>
Thu, 21 Dec 2023 03:05:34 +0000 (11:05 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 21 Dec 2023 03:05:34 +0000 (11:05 +0800)
code/sdk/middleware/services/gui/uikit/ui/frameworks/animator/animator.cpp

index 5d75074..9fa3431 100755 (executable)
@@ -55,22 +55,32 @@ void Animator::Resume()
 }
 
 void Animator::Run()
-{
-    uint32_t elapse = HALTick::GetInstance().GetElapseTime(lastRunTime_);
-    lastRunTime_ = HALTick::GetInstance().GetTime();
-    runTime_ = (UINT32_MAX - elapse > runTime_) ? (runTime_ + elapse) : period_;
+{    
+    uint32_t elapse = HALTick::GetInstance().GetElapseTime(lastRunTime_);//上次执行后走过的时间
+    lastRunTime_ = HALTick::GetInstance().GetTime();//记录上次走过的时间
+    // runTime_ = (UINT32_MAX - elapse > runTime_) ? (runTime_ + elapse) : period_;
+    runTime_ = (UINT32_MAX - elapse > runTime_) ? (runTime_ + elapse) : elapse; //如果时间超过限制,就重新计时
+    if (!repeat_ ) {
 
-    if (!repeat_ && (runTime_ >= period_)) {
-        runTime_ = period_;
-        if (callback_ != nullptr) {
-            callback_->Callback(view_);
+        if (runTime_ >= period_)
+        {
+            if (callback_ != nullptr) {
+                callback_->Callback(view_);
+            }
+            if(period_>0)
+                runTime_=runTime_%period_;//重新计量时间
+            Stop();
         }
-        Stop();
-        return;
-    }
+    }else {
+        if (runTime_ >= period_)
+        {
+            if (callback_ != nullptr) {
+                callback_->Callback(view_);
+            }
+            if(period_>0)
+                runTime_=runTime_%period_;//重新计量时间   
 
-    if (callback_ != nullptr) {
-        callback_->Callback(view_);
+        }
     }
 }
 } // namespace OHOS