数字转时间,并自动倒计时
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-07-16 20:05:16 |
👁️ 阅读: 12
根据浮生梦老师前端课程内容,要实现数字转时间并自动倒计时的功能,可以结合 `SL:SecondToHMS` 函数和定时器来完成。
**核心思路:**
1. 使用 `SL:SecondToHMS` 将秒数转为易读的时间字符串
2. 使用 `SL:schedule` 创建每秒执行的定时器更新显示
3. 在倒计时结束时清理定时器
**完整示例代码:**
```lua
-- 创建父窗口
local parent = GUI:Win_Create("CountDownWin", 100, 100, 200, 100, false, false, true, false, false, false, 1)
-- 创建显示倒计时的文本控件
local countdownText = GUI:Text_Create(parent, "countdownText", 50, 40, 20, "#FFFFFF", "00:00:00")
GUI:setAnchorPoint(countdownText, 0.5, 0.5)
-- 倒计时函数
local function startCountdown(seconds)
local remainingTime = seconds
-- 更新显示的定时器回调
local function updateTimer()
if remainingTime <= 0 then
-- 倒计时结束
GUI:Text_setString(countdownText, "时间到!")
SL:unschedule(countdownText) -- 停止定时器
return
end
-- 将秒数转换为时间字符串
local timeStr = SL:SecondToHMS(remainingTime, true, true)
GUI:Text_setString(countdownText, timeStr)
remainingTime = remainingTime - 1
end
-- 启动定时器,每秒执行一次
SL:schedule(countdownText, updateTimer, 1)
-- 立即执行一次更新
updateTimer()
end
-- 开始一个3600秒(1小时)的倒计时
startCountdown(3600)
-- 如果要停止倒计时,可以调用:
-- SL:unschedule(countdownText)
```
**函数说明:**
- `SL:SecondToHMS(seconds, true, true)`:将秒数转换为简化格式的时间字符串
- `SL:schedule(widget, callback, interval)`:创建循环定时器
- `SL:unschedule(widget)`:停止指定控件的定时器
- `GUI:Text_setString(textWidget, string)`:更新文本显示
**注意事项:**
1. 定时器需要绑定到控件对象(如countdownText),便于后续管理
2. 倒计时结束时记得调用`SL:unschedule`清理定时器
3. 时间格式可以根据需求调整`SL:SecondToHMS`的参数
这个方案可以用于各种需要倒计时显示的场景,如活动倒计时、技能冷却时间等。
← 返回问答库