From: Caisking <3449750381@qq.com> Date: Tue, 8 Oct 2024 09:25:38 +0000 (+0800) Subject: 系统:修改label设置为不因为长度改变滚动速度 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=03d52727262578bee98eebe325a6cdc82c451bfe;p=mirrors%2FFD230.git 系统:修改label设置为不因为长度改变滚动速度 --- diff --git a/code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_label.cpp b/code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_label.cpp index 0fa53ac70..3cee7ede7 100755 --- a/code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_label.cpp +++ b/code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_label.cpp @@ -136,28 +136,28 @@ private: uint32_t time = HALTick::GetInstance().GetElapseTime(startTime_); float x0 = startPos_; float x1 = 1.0 * labelWidth_ - textWidth_; - float factor = 200000; // slow down the speed - float t = time * speed_ / factor; - float t1 = 1.0; - float period = 2.0; - while (t < 0) { - t += period; - } - while (t > period) { - t -= period; - } + + float factor = 1000; // 1000: slow down the speed + float v = speed_ / factor; + v = x1 - x0 > 0 ? v : -v; + float t = time; + float t1 = (x1 - x0) / v; + float period = 2.0 * t1; // 2: double + t = t - float(t / period) * period; float x = 0; - if (t >=0 && t < t1) { - x = (x1 - x0) * t / t1 + x0; + if (t < t1) { + x = v * t + x0; } else { - x = (x0 - x1) * (t - t1) / t1 + x1; + x = -v * (t - t1) + x1; } + UILabel *label = dynamic_cast(view); if (label != nullptr) { label->offsetX_ = MATH_ROUND(x); label->Invalidate(); } + // printf("offsetX: %d time %d\n", label->offsetX_, time); } static constexpr uint8_t ANIM_WAIT_COUNT = 50;