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 {}
根据浮生梦老师前端课程内容,我来帮你为Text_2到Text_5添加动画效果。你需要创建淡入淡出、从下往上的动画,并在不同条件下播放不同的文本动画。
```lua
-- 在lianhuo.upmain()函数中添加动画逻辑
function lianhuo.upmain()
if not lianhuo.parent or not lianhuo.parent._ui then
return
end
local ui = lianhuo.parent._ui
local cfg = lianhuo.parent.cfg
if not cfg then
return
end
local var = tonumber(SL:GetMetaValue("SERVER_VALUE", "U48"))
SL:Print("获取当前焚天等级 var =", var)
if var == "" then var = 0 end
var = tonumber(var) or 0
if not GUI:Win_IsNull(ui.Text_1) then
GUI:Text_setString(ui.Text_1, (var or 0))
end
-- 初始化所有Text控件为不可见
local textControls = {ui.Text_2, ui.Text_3, ui.Text_4, ui.Text_5}
for _, text in ipairs(textControls) do
if not GUI:Win_IsNull(text) then
GUI:setVisible(text, false)
GUI:setOpacity(text, 0) -- 设置透明度为0
end
end
-- 定义动画函数
local function playTextAnimation(textWidget, delayTime)
if GUI:Win_IsNull(textWidget) then
return
end
-- 设置初始状态
GUI:setVisible(textWidget, true)
GUI:setOpacity(textWidget, 0)
-- 获取当前位置
local pos = GUI:getPosition(textWidget)
-- 设置起始位置(从下方)
GUI:setPosition(textWidget, pos.x, pos.y - 50)
-- 创建动画序列
local actionSequence = GUI:ActionSequence(
GUI:ActionFadeIn(0.3), -- 淡入效果
GUI:ActionMoveBy(0.5, 0, 50), -- 向上移动
GUI:DelayTime(delayTime or 1), -- 停留时间
GUI:ActionFadeOut(0.3), -- 淡出效果
GUI:CallFunc(function()
GUI:setVisible(textWidget, false)
GUI:setPosition(textWidget, pos.x, pos.y) -- 恢复原位
end)
)
-- 运行动画
GUI:runAction(textWidget, actionSequence)
end
-- 根据条件播放不同动画
if var <= 0 then
-- 打开界面时var<=0播放Text_2动画
if not GUI:Win_IsNull(ui.Text_2) then
playTextAnimation(ui.Text_2, 1)
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
-- 按钮点击事件
if GUI:Win_IsNotNull(ui.Button_1) then
GUI:addOnClickEvent(ui.Button_1, function()
SL:print("点击了第1个按钮")
GUI:delayTouchEnabled(ui.Button_1, 0.2)
-- 先隐藏所有可能正在播放的动画
for _, text in ipairs(textControls) do
if not GUI:Win_IsNull(text) then
GUI:stopAllActions(text)
GUI:setVisible(text, false)
end
end
local msg = {}
msg.Script = lianhuo.param1
local jsonstr = SL:JsonEncode(msg)
SL:SendLuaNetMsg(58003, lianhuo.param2, 0, 0, jsonstr)
end)
end
end
-- 在服务端返回结果时需要播放相应动画
-- 你需要在前端接收网络消息的地方添加动画播放逻辑
-- 例如,在接收服务端返回的58003消息时:
SL:RegisterLuaNetMsg(58003, function(msgID, p1, p2, p3, msgData)
local data = SL:JsonDecode(msgData)
if data and data.result then
local ui = lianhuo.parent._ui
-- 先停止所有动画
local textControls = {ui.Text_2, ui.Text_3, ui.Text_4, ui.Text_5}
for _, text in ipairs(textControls) do
if not GUI:Win_IsNull(text) then
GUI:stopAllActions(text)
GUI:setVisible(text, false)
end
end
-- 根据结果播放不同动画
if data.result == "success" then
-- 上交成功播放Text_3动画
if not GUI:Win_IsNull(ui.Text_3) then
GUI:setVisible(ui.Text_3, true)
GUI:setOpacity(ui.Text_3, 0)
local pos = GUI:getPosition(ui.Text_3)
GUI:setPosition(ui.Text_3, pos.x, pos.y - 50)
local actionSequence = GUI:ActionSequence(
GUI:ActionFadeIn(0.3),
GUI:ActionMoveBy(0.5, 0, 50),
GUI:DelayTime(1),
GUI:ActionFadeOut(0.3),
GUI:CallFunc(function()
GUI:setVisible(ui.Text_3, false)
GUI:setPosition(ui.Text_3, pos.x, pos.y)
end)
)
GUI:runAction(ui.Text_3, actionSequence)
end
elseif data.result == "fail" then
-- 上交失败播放Text_4动画
if not GUI:Win_IsNull(ui.Text_4) then
GUI:setVisible(ui.Text_4, true)
GUI:setOpacity(ui.Text_4, 0)
local pos = GUI:getPosition(ui.Text_4)
GUI:setPosition(ui.Text_4, pos.x, pos.y - 50)
local actionSequence = GUI:ActionSequence(
GUI:ActionFadeIn(0.3),
GUI:ActionMoveBy(0.5, 0, 50),
GUI:DelayTime(1),
GUI:ActionFadeOut(0.3),
GUI:CallFunc(function()
GUI:setVisible(ui.Text_4, false)
GUI:setPosition(ui.Text_4, pos.x, pos.y)
end)
)
GUI:runAction(ui.Text_4, actionSequence)
end
end
end
end, lianhuo.parent)
```
**代码说明:**
1. **动画效果**:
- 使用`GUI:ActionFadeIn`和`GUI:ActionFadeOut`实现淡入淡出
- 使用`GUI:ActionMoveBy`实现从下往上移动
- 使用`GUI:DelayTime`控制停留时间
- 使用`GUI:ActionSequence`将多个动作组合成序列
2. **条件判断**:
- `var <= 0`:打开界面时播放Text_2动画
- `var >= 10`:打开界面时播放Text_5动画
- 上交成功:播放Text_3动画
- 上交失败:播放Text_4动画
3. **注意事项**:
- 每次播放动画前先停止所有动画并隐藏文本
- 动画播放后恢复文本到原始位置
- 需要服务端在返回消息中携带`result`字段("success"或"fail")
4. **需要补充**:
- 服务端需要在返回58003消息时包含结果字段
- Text控件需要提前在界面中创建好
记得在服务端的`lianhuo.link`函数中,根据成功失败情况,在返回给前端的消息中添加`result`字段。这样前端就能根据结果播放对应的动画了。