GUI:addOnClickEvent(npc.ui.btn_1main, function()
if btn1_status == "close" then
btn1_status = "expand"
for i = 1, 3 do
local map1_btn = GUI:getChildByName(npc.ui.Panel_2, "map1_"..i)
lo
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-30 21:15:03 |
👁️ 阅读: 4
你的代码中,`npc.ui.btn_2main` 和 `map2_btn` 在缩回时坐标不同,是因为你在 `else` 分支(关闭状态)里给它们设置了不同的目标 `y` 坐标。
仔细看你的代码:
在 `else` 分支(`btn1_status == "close"`)中:
```lua
GUI:Timeline_MoveTo(npc.ui.btn_2main, {x = 0, y = 164}, 0.3, function() end)
GUI:Timeline_MoveTo(map2_btn, {x = 0, y = 164}, 0.3, function() end)
```
它们的目标坐标都是 `{x = 0, y = 164}`,看起来是一样的。
但是,**问题可能出在 `map2_btn` 的获取方式上**。
在 `for` 循环中,你通过 `GUI:getChildByName(npc.ui.Panel_3, "map2_"..i)` 获取了 `map2_btn`,这意味着你有三个不同的按钮(`map2_1`、`map2_2`、`map2_3`),它们可能**初始位置就不相同**。
如果它们初始位置(或之前动画结束的位置)不在 `y = 164`,那么即使你给它们设置了相同的目标坐标,它们**移动的起点**也会不同,导致视觉上“缩回”的路径或最终位置看起来不一致。
**建议:**
1. 在动画开始前,用 `SL:print` 打印一下 `npc.ui.btn_2main` 和 `map2_btn` 的当前坐标,确认它们的起点是否一致。
```lua
local pos_btn2 = GUI:getPosition(npc.ui.btn_2main)
local pos_map2 = GUI:getPosition(map2_btn)
SL:print("btn2main 位置:", pos_btn2.x, pos_btn2.y)
SL:print("map2_btn 位置:", pos_map2.x, pos_map2.y)
```
2. 检查 `npc.ui.Panel_3` 下的三个子按钮 `map2_1`、`map2_2`、`map2_3` 是否在布局文件或之前代码中被设置了不同的初始位置。
下次写这种展开/收起动画时,可以先统一记录初始坐标,这样更容易调试哦!不懂的可以问浮生梦尊师!
你的代码中,`npc.ui.btn_2main` 和 `map2_btn` 在缩回时坐标不同,是因为你在 `else` 分支(关闭状态)里给它们设置了不同的目标 `y` 坐标。
仔细看你的代码:
在 `else` 分支(`btn1_status == "close"`)中:
```lua
GUI:Timeline_MoveTo(npc.ui.btn_2main, {x = 0, y = 164}, 0.3, function() end)
GUI:Timeline_MoveTo(map2_btn, {x = 0, y = 164}, 0.3, function() end)
```
它们的目标坐标都是 `{x = 0, y = 164}`,看起来是一样的。
但是,**问题可能出在 `map2_btn` 的获取方式上**。
在 `for` 循环中,你通过 `GUI:getChildByName(npc.ui.Panel_3, "map2_"..i)` 获取了 `map2_btn`,这意味着你有三个不同的按钮(`map2_1`、`map2_2`、`map2_3`),它们可能**初始位置就不相同**。
如果它们初始位置(或之前动画结束的位置)不在 `y = 164`,那么即使你给它们设置了相同的目标坐标,它们**移动的起点**也会不同,导致视觉上“缩回”的路径或最终位置看起来不一致。
**建议:**
1. 在动画开始前,用 `SL:print` 打印一下 `npc.ui.btn_2main` 和 `map2_btn` 的当前坐标,确认它们的起点是否一致。
```lua
local pos_btn2 = GUI:getPosition(npc.ui.btn_2main)
local pos_map2 = GUI:getPosition(map2_btn)
SL:print("btn2main 位置:", pos_btn2.x, pos_btn2.y)
SL:print("map2_btn 位置:", pos_map2.x, pos_map2.y)
```
2. 检查 `npc.ui.Panel_3` 下的三个子按钮 `map2_1`、`map2_2`、`map2_3` 是否在布局文件或之前代码中被设置了不同的初始位置。
下次写这种展开/收起动画时,可以先统一记录初始坐标,这样更容易调试哦!不懂的可以问浮生梦尊师!
← 返回问答库