local zhuansheng = {}
function zhuansheng.main(param1, param2, param3, param4)
SL:print("===== 转生界面打开 =====")
lib:Require(param1, function(state)
if state then
if param1 then
zhuansheng.parent = lib:o
看了你的代码,问题出在第148行调用了不存在的函数。根据浮生梦老师前端课程内容,检查控件可见性应该使用 `GUI:isVisible()` 函数,而不是 `GUI:Win_isVisible()`。
错误代码位置:
```lua
if GUI:Win_IsNotNull(ui[effectName]) then
if not GUI:isVisible(ui[effectName]) then -- 这里函数名错误
allEffectsVisible = false
break
end
else
allEffectsVisible = false
break
end
```
修正后的代码应该是:
```lua
if GUI:Win_IsNotNull(ui[effectName]) then
if not GUI:isVisible(ui[effectName]) then
allEffectsVisible = false
break
end
else
allEffectsVisible = false
break
end
```
另外,我还注意到你的代码中还有几个地方需要改进:
1. **空值判断函数不一致**:你使用了 `GUI:Win_IsNotNull()`,但在浮生梦老师的前端课程中,正确的空值判断函数是:
```lua
-- 正确方式
if GUI:Win_IsNull(widget) then
-- 控件为空
else
-- 控件不为空
end
```
2. **UI控件访问方式**:建议统一使用 `self.ui` 而不是 `ui`,因为你在 `zhuansheng.upmain()` 函数中定义的是 `local ui = zhuansheng.parent._ui`
3. **函数调用顺序**:应该先检查控件是否存在,再检查可见性
建议的完整修正方案:
```lua
-- 检查Effect_17到Effect_21是否全部显示
local allEffectsVisible = true
for i = 17, 21 do
local effectName = "Effect_" .. i
local effectWidget = zhuansheng.parent._ui[effectName]
-- 先检查控件是否存在
if GUI:Win_IsNull(effectWidget) then
allEffectsVisible = false
break
end
-- 再检查是否可见
if not GUI:isVisible(effectWidget) then
allEffectsVisible = false
break
end
end
```
下次写代码时要注意函数名的正确性,如果对函数用法不确定,可以随时问我!