MainLeftTop = {}
MainLeftTop.name = {
[1] = "首充福利",
[2] = "全民会员",
}
function MainLeftTop.main()
local bool = SL:GetMetaValue("IS_PC_PLAY_MODE")
if bool then
SL:Print("PC端")
MainLeftTop.client = {778, -5}
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-11 09:23:20 |
👁️ 阅读: 3
我来帮你给按钮添加500毫秒的点击CD。主要思路是使用一个计时器变量来控制点击间隔。
```lua
MainLeftTop = {}
MainLeftTop.name = {
[1] = "首充福利",
[2] = "全民会员",
}
-- 添加CD控制变量
MainLeftTop._lastClickTime = 0
MainLeftTop._clickCD = 0.5 -- 500毫秒
function MainLeftTop.main()
local bool = SL:GetMetaValue("IS_PC_PLAY_MODE")
if bool then
SL:Print("PC端")
MainLeftTop.client = {778, -5}
MainLeftTop.status = true
else
SL:Print("手机端")
MainLeftTop.client = {831, -35}
MainLeftTop.status = true
end
MainLeftTop.createUI()
end
local function toggleExpand()
-- 检查CD
local currentTime = os.clock()
if currentTime - MainLeftTop._lastClickTime < MainLeftTop._clickCD then
SL:Print("点击太快了,请稍后再试!")
return
end
-- 更新点击时间
MainLeftTop._lastClickTime = currentTime
-- 切换状态
MainLeftTop.status = not MainLeftTop.status
MainLeftTop.updateUI()
end
function MainLeftTop.createUI()
local parent = GUI:Attach_LeftTop()
GUI:removeAllChildren(parent)
GUI:LoadExport(parent, "main/main_left_top")
local ui = GUI:ui_delegate(parent)
MainLeftTop.ui = ui
-- 绑定点击事件
GUI:addOnClickEvent(ui.Button_2, toggleExpand)
GUI:addOnClickEvent(ui.Button_1, toggleExpand)
-- 设置初始位置
GUI:setPosition(ui.Node_1, MainLeftTop.client[1], MainLeftTop.client[2])
-- 初始化UI状态
MainLeftTop.updateUI()
end
function MainLeftTop.updateUI()
local ui = MainLeftTop.ui
if not ui then return end
local obj = GUI:getChildren(ui.Panel_1)
SL:Print("状态:", MainLeftTop.status, "坐标:", MainLeftTop.client[1], MainLeftTop.client[2])
if MainLeftTop.status then
-- 展开状态
GUI:setVisible(ui.Panel_1, true)
GUI:setOpacity(ui.Panel_1, 0)
GUI:Timeline_FadeIn(ui.Panel_1, 0.8, function()
end)
GUI:setVisible(ui.Button_1, false)
GUI:setVisible(ui.Button_2, true)
-- 子控件淡入
for k, v in pairs(obj) do
GUI:setOpacity(v, 0)
GUI:Timeline_FadeIn(v, 0.5, function()
end)
GUI:addOnClickEvent(v, function ()
SL:Print(MainLeftTop.name[k])
SL:SendNetMsg(10000, 1000, 0, 0, MainLeftTop.name[k])
end)
end
else
-- 收起状态
GUI:setVisible(ui.Button_1, true)
GUI:setVisible(ui.Button_2, false)
-- 淡出动画
for _, v in pairs(obj) do
GUI:Timeline_FadeOut(v, 0.5, function()
GUI:setVisible(ui.Panel_1, false)
end)
end
end
end
```
**主要修改:**
1. **添加CD控制变量**:
- `_lastClickTime`:记录上次点击的时间戳
- `_clickCD`:CD时间,设置为0.5秒(500毫秒)
2. **在`toggleExpand`函数中添加CD检查**:
- 使用`os.clock()`获取当前时间
- 计算距离上次点击的时间差
- 如果时间差小于CD时间,则提示并返回,不执行切换操作
- 如果通过CD检查,更新点击时间并执行切换
**效果:**
- 用户点击收缩/展开按钮后,500毫秒内再次点击会被阻止
- 会显示提示信息"点击太快了,请稍后再试!"
- 500毫秒后可以正常点击
这样就能有效防止用户快速连续点击导致的UI异常了!
← 返回问答库