}
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