获取按钮点击对象
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-04 02:35:47 |
👁️ 阅读: 6
在996引擎中获取按钮点击对象,可以通过以下几种方式实现:
## 1. 通过点击事件回调获取当前按钮
在按钮的点击事件回调函数中,`widget`参数就是被点击的按钮对象:
```lua
local button = GUI:Button_Create(parent, "btn_test", 100, 100, "res/public/1900000612.png")
GUI:addOnClickEvent(button, function(widget)
-- widget就是被点击的按钮对象
SL:print("按钮被点击啦!")
-- 可以获取按钮的各种属性
local btnText = GUI:Button_getTitleText(widget)
SL:print("按钮文字是:" .. btnText)
end)
```
## 2. 通过ID获取按钮对象
如果知道按钮的ID,可以通过`GUI:GetWindow()`函数获取:
```lua
-- 创建按钮
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
local button = GUI:Button_Create(parent, "my_button", 100, 100, "res/public/1900000612.png")
-- 在其他地方通过ID获取
local btnObject = GUI:GetWindow(parent, "my_button")
if not GUI:Win_IsNull(btnObject) then
SL:print("成功获取到按钮对象")
end
```
## 3. 在事件处理函数中获取触发对象
对于长按、触摸等事件,同样可以通过回调参数获取:
```lua
-- 长按事件
GUI:addOnLongTouchEvent(button, function(widget)
-- widget是长按的按钮对象
SL:print("长按了按钮")
end)
-- 触摸事件
GUI:addOnTouchEvent(button, function(widget, eventType, posX, posY)
-- widget是触摸的按钮对象
-- eventType: 0=开始 1=移动 2=结束 3=取消
SL:print("触摸了按钮,事件类型:" .. eventType)
end)
```
## 4. 获取按钮的父控件和子控件
```lua
-- 获取父控件
local parent = GUI:getParent(button)
-- 通过名称获取子控件(如果按钮有子节点)
local child = GUI:getChildByName(button, "child_name")
```
## 注意事项:
1. 使用前检查对象是否有效:`if not GUI:Win_IsNull(widget) then`
2. 按钮ID必须唯一,不能重复
3. 获取到的按钮对象可以用于设置属性、添加事件等操作
这样你就可以在代码的任何地方获取和操作按钮对象了!
← 返回问答库