GUI = SL:Require("fengzhuang/GUI", true)
local GUI = GUI
function GUI:bg(id)
local x ,y = SL:GetMetaValue("SCREEN_WIDTH")/2,SL:GetMetaValue("SCREEN_HEIGHT")/2
GUI:Win_Create(id, x, y)
return self
end
function GUI:jiazaiui(root,id)
从你的代码来看,`bg` 函数返回的是 `self`,但你在调用时没有正确接收返回值。
问题出在这里:
```lua
local root = GUI:bg('win')
```
`bg` 函数内部创建了窗口,但你需要获取这个窗口对象作为根节点。根据浮生梦老师前端课程内容,`Win_Create` 函数需要完整的参数:
```lua
function GUI:bg(id)
local x = SL:GetMetaValue("SCREEN_WIDTH") / 2
local y = SL:GetMetaValue("SCREEN_HEIGHT") / 2
local win = GUI:Win_Create(id, x, y, 0, 0, false, false, true, false, false, false, 1)
return win -- 应该返回窗口对象,而不是self
end
```
修改后的完整代码:
```lua
GUI = SL:Require("fengzhuang/GUI", true)
function GUI:bg(id)
local x = SL:GetMetaValue("SCREEN_WIDTH") / 2
local y = SL:GetMetaValue("SCREEN_HEIGHT") / 2
local win = GUI:Win_Create(id, x, y, 0, 0, false, false, true, false, false, false, 1)
return win
end
function GUI:jiazaiui(root, id)
GUI:LoadExport(root, id)
return self
end
local root = GUI:bg('win')
if not GUI:Win_IsNull(root) then
GUI:jiazaiui(root, 212)
else
SL:Print("创建窗口失败,root为空")
end
```
主要问题:
1. `Win_Create` 参数不完整,缺少后面9个参数
2. 函数应该返回窗口对象而不是self
3. 创建后需要检查是否成功
这样修改后,`root` 就不会是空值了。