function shousuo(ui)
GUI:addOnClickEvent(ui['bt_11'],function ()
GUI:setTag(ui['bt_11'], 1)
for i = 1 , 10 do
GUI:setOpacity(ui['bt_'..i], 255)
local fadeOutAction = GUI:ActionFadeTo
你的代码有几个关键问题需要修正:
1. **按钮初始状态问题**:收缩时立即设置可见性为false,但展开时没有正确初始化
2. **动作序列逻辑**:收缩动画完成后才隐藏,但展开时缺少延迟显示
3. **标签初始化**:按钮标签初始值未设置
这是修正后的代码:
```lua
function shousuo(ui)
GUI:addOnClickEvent(ui['bt_11'], function()
GUI:setTag(ui['bt_11'], 1)
for i = 1, 10 do
GUI:setOpacity(ui['bt_'..i], 255)
local fadeOutAction = GUI:ActionFadeTo(0.5, 0)
local hideFunc = GUI:CallFunc(function()
GUI:setVisible(ui['bt_'..i], false)
end)
GUI:runAction(ui['bt_'..i], GUI:ActionSequence(fadeOutAction, hideFunc))
end
end)
end
function zhankai(ui)
for i = 1, 10 do
GUI:setVisible(ui['bt_'..i], true)
GUI:setOpacity(ui['bt_'..i], 0)
local fadeInAction = GUI:ActionFadeTo(0.5, 255)
GUI:runAction(ui['bt_'..i], GUI:ActionSequence(fadeInAction))
end
end
local function networkCB(msgID, msgData)
local parent = GUI:Attach_RightTop()
local ui = GUI:ui_delegate(parent)
-- 初始化按钮标签(如果未设置)
local tag = GUI:getTag(ui['bt_11'])
if tag == -1 or tag == 0 then -- 检查是否为默认值
-- 首次进入时确保所有按钮可见
for i = 1, 10 do
GUI:setVisible(ui['bt_'..i], true)
GUI:setOpacity(ui['bt_'..i], 255)
end
GUI:setTag(ui['bt_11'], -1) -- 设置初始展开状态
tag = -1
end
if tag == -1 then
SL:print("收缩状态,标签值:" .. tag)
GUI:setTag(ui['bt_11'], 1)
shousuo(ui)
return
end
if tag == 1 then
SL:print("展开状态,标签值:" .. tag)
GUI:setTag(ui['bt_11'], -1)
zhankai(ui)
return
end
end
SL:RegisterNetMsg(1000, networkCB)
```
**主要修改:**
1. 在`networkCB`函数中添加了按钮初始状态设置
2. 确保首次进入时所有按钮可见且不透明
3. 明确设置初始标签值为-1(展开状态)
**调试建议:**
- 在按钮创建后立即打印它们的可见性和标签值
- 确保按钮`bt_1`到`bt_10`确实被正确创建和添加到界面中
- 检查`GUI:ui_delegate(parent)`是否能正确获取到所有按钮对象
如果按钮还是出不来,可以在按钮创建后添加调试代码:
```lua
for i = 1, 10 do
SL:print("按钮 bt_"..i.." 是否可见: " .. tostring(GUI:isVisible(ui['bt_'..i])))
end
```
这样能帮你定位具体是哪个环节出了问题。