local lianhuo = {}
function lianhuo.main(param1, param2, param3, param4)
lib:Require(param1, function(state)
if state then
if param1 then
lianhuo.parent = lib:openwin(param1, nil, true, param4) or {}
看了你的代码,问题出在动画逻辑的判断条件和控件名称匹配上。让我帮你分析一下:
**主要问题:**
1. **成功/失败动画逻辑颠倒**:在58003消息处理函数中,`data.result == "success"`时播放的是`ui.Text_3`动画,但你说想要播放`Text_4`动画。实际上根据你的描述,应该是:
- 成功 → 播放`Text_3`动画(代码中确实如此)
- 失败 → 播放`Text_4`动画(代码中确实如此)
2. **初始状态动画冲突**:在`upmain()`函数中,当`var <= 10`时会自动播放`Text_2`动画,这可能会干扰后续的动画播放。
**具体分析:**
```lua
-- 你的代码中:
if var <= 10 then
-- 打开界面时var<=0播放Text_2动画
if not GUI:Win_IsNull(ui.Text_2) then
playTextAnimation(ui.Text_2, 1) -- ⚠️ 这里会先播放Text_2动画
end
end
-- 而在58003消息处理中:
if data.result == "success" then
-- 上交成功播放Text_3动画
if not GUI:Win_IsNull(ui.Text_3) then
-- 播放Text_3动画...
end
elseif data.result == "fail" then
-- 上交失败播放Text_4动画
if not GUI:Win_IsNull(ui.Text_4) then
-- 播放Text_4动画...
end
end
```
**问题原因:**
1. 当你打开界面时,如果`var <= 10`,会立即播放`Text_2`动画
2. 点击按钮后,虽然停止了所有动画,但`Text_2`动画可能还在播放中
3. 服务端返回结果后,播放新的动画,但用户可能看到的是残留的`Text_2`动画效果
**解决方案:**
修改`upmain()`函数中的初始动画逻辑:
```lua
-- 修改这部分:
-- 根据条件播放不同动画
if var <= 10 then
-- 打开界面时var<=0播放Text_2动画
-- 可以考虑移除这里的自动播放,或者添加一个标志控制
-- 或者只在第一次打开界面时播放
if lianhuo.firstOpen then
if not GUI:Win_IsNull(ui.Text_2) then
playTextAnimation(ui.Text_2, 1)
end
lianhuo.firstOpen = false
end
elseif var >= 10 then
-- var>=10时播放Text_5动画
if not GUI:Win_IsNull(ui.Text_5) then
playTextAnimation(ui.Text_5, 1)
end
end
```
**建议:**
1. 在`main`函数中初始化`lianhuo.firstOpen = true`
2. 确保服务端返回的`data.result`值确实是"success"和"fail"(大小写敏感)
3. 使用`SL:Print("收到结果:", data.result)`来调试确认服务端返回的值
这样修改后,应该就能正确播放对应的动画了。下次写代码时要注意动画的时序控制,避免多个动画同时播放造成视觉混淆!