local ui = {}
function ui.init(parent)
-- Create Node
local Node = GUI:Node_Create(parent, "Node", 0.00, 0.00)
GUI:setChineseName(Node, "任务节点")
GUI:setAnchorPoint(Node, 0.50, 0.50)
GUI:setTag(Node, -1)
-- Create Panel_assist
local Panel_assis
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-16 09:34:25 |
👁️ 阅读: 7
要获取这个任务栏上的所有节点,你需要在 `ui.init` 函数中返回创建的节点对象,或者在外部通过 `GUI:getChildByName` 函数按名称获取。
以下是两种方法:
## 方法一:在 `ui.init` 函数中返回节点表
```lua
local ui = {}
function ui.init(parent)
-- 创建节点表
local nodes = {}
-- Create Node
local Node = GUI:Node_Create(parent, "Node", 0.00, 0.00)
GUI:setChineseName(Node, "任务节点")
GUI:setAnchorPoint(Node, 0.50, 0.50)
GUI:setTag(Node, -1)
nodes["Node"] = Node -- 保存到节点表
-- Create Panel_assist
local Panel_assist = GUI:Layout_Create(Node, "Panel_assist", 0.00, 0.00, 244.00, 188.00, false)
GUI:setChineseName(Panel_assist, "任务_组合")
GUI:setAnchorPoint(Panel_assist, 0.00, 1.00)
GUI:setTouchEnabled(Panel_assist, false)
GUI:setTag(Panel_assist, -1)
nodes["Panel_assist"] = Panel_assist
-- ... 其他节点创建时也保存到 nodes 表中
-- 创建 ListView_mission
local ListView_mission = GUI:ListView_Create(Panel_mission, "ListView_mission", 101.00, 94.00, 200.00, 185.00, 1)
GUI:ListView_setGravity(ListView_mission, 5)
GUI:setChineseName(ListView_mission, "任务详细_列表")
GUI:setAnchorPoint(ListView_mission, 0.50, 0.50)
GUI:setTouchEnabled(ListView_mission, true)
GUI:setTag(ListView_mission, -1)
nodes["ListView_mission"] = ListView_mission
-- ... 继续保存所有需要的节点
-- 最后保存节点表到 ui 对象
ui.nodes = nodes
return nodes -- 或者直接返回节点表
end
return ui
```
## 方法二:通过名称获取节点
```lua
-- 使用示例:
-- 假设已经创建了任务栏界面
local taskUI = ui.init(parent)
-- 通过名称获取节点
local Node = GUI:getChildByName(parent, "Node")
local Panel_assist = GUI:getChildByName(Node, "Panel_assist")
local Panel_content = GUI:getChildByName(Panel_assist, "Panel_content")
local ListView_mission = GUI:getChildByName(Panel_mission, "ListView_mission")
local Button_mission = GUI:getChildByName(BtnG_content, "Button_mission")
local Button_hide = GUI:getChildByName(Panel_hide, "Button_hide")
-- 获取坐标示例
local pos = GUI:getPosition(Panel_assist)
SL:Print("Panel_assist位置:x=", pos.x, ", y=", pos.y)
-- 获取尺寸示例
local size = GUI:getContentSize(Panel_assist)
SL:Print("Panel_assist尺寸:宽=", size.width, ", 高=", size.height)
```
## 方法三:创建全局引用表
```lua
local ui = {}
local taskNodes = {} -- 全局节点表
function ui.init(parent)
-- Create Node
local Node = GUI:Node_Create(parent, "Node", 0.00, 0.00)
GUI:setChineseName(Node, "任务节点")
GUI:setAnchorPoint(Node, 0.50, 0.50)
GUI:setTag(Node, -1)
taskNodes.Node = Node
-- Create Panel_assist
local Panel_assist = GUI:Layout_Create(Node, "Panel_assist", 0.00, 0.00, 244.00, 188.00, false)
GUI:setChineseName(Panel_assist, "任务_组合")
GUI:setAnchorPoint(Panel_assist, 0.00, 1.00)
GUI:setTouchEnabled(Panel_assist, false)
GUI:setTag(Panel_assist, -1)
taskNodes.Panel_assist = Panel_assist
-- ... 保存所有节点
-- 返回节点表
return taskNodes
end
-- 外部访问函数
function ui.getNode(name)
return taskNodes[name]
end
function ui.getAllNodes()
return taskNodes
end
return ui
```
## 使用示例:
```lua
-- 初始化界面
local taskUI = ui.init(parent)
-- 获取特定节点
local hideButton = ui.getNode("Button_hide")
if hideButton and not GUI:Win_IsNull(hideButton) then
-- 添加点击事件
GUI:addOnClickEvent(hideButton, function()
SL:Print("隐藏按钮被点击")
end)
end
-- 获取任务列表
local missionList = ui.getNode("ListView_mission")
if missionList then
-- 操作列表
SL:Print("任务列表获取成功")
end
```
**建议:** 使用方法一或三,在创建时保存节点引用,这样后续操作更方便,也避免了频繁调用 `GUI:getChildByName` 的性能开销。
← 返回问答库