MainRightTop = {}
local IconData = {
{
{ notes = "在线充值按钮", path = "res/custom/top/11.png" },
{ notes = "狂暴之力按钮", path = "res/custom/top/12.png" },
{ notes = "首领挑战按钮", path = "res/custom/top/13.png" },
},
{
{ notes = "每日礼包按钮", path = "res/
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-18 16:45:04 |
👁️ 阅读: 29
从你提供的代码来看,问题出在移动端小地图收缩/展开时,没有正确调用你为 `SL:OpenMiniMapChangeUI` 和 `SL:CloseMiniMapChangeUI` 注册的事件函数。
在 `MainRightTop.main()` 函数中,你根据 `SL:GetMetaValue("CURRENT_OPERMODE")` 判断是否为PC端(值为1),并设置了不同的初始位置。
* **PC端** (`isOnPC == 1`):`topIcons` 的初始 `x` 坐标为 `-630`。
* **移动端** (`else`):`topIcons` 的初始 `x` 坐标为 `-665`。
然而,在事件回调中,你写死了移动的目标坐标:
* `SL:OpenMiniMapChangeUI`:移动至 `{ x = -445, y = 0 }`
* `SL:CloseMiniMapChangeUI`:移动至 `{ x = -665, y = 0 }`
对于移动端来说:
1. 初始位置是 `x = -665`。
2. 当小地图打开时,事件会将其移动到 `x = -445`(正确)。
3. 但当小地图关闭时,事件会将其再次移动到 `x = -665`。这个位置与移动端的初始位置相同,所以视觉上没有变化,导致你以为事件没有触发。
**解决方案:**
你需要根据当前平台动态计算事件中的目标坐标。修改事件注册部分的代码如下:
```lua
SL:OpenMiniMapChangeUI(function(topIcons)
local targetX = -445
if SL:GetMetaValue("CURRENT_OPERMODE") ~= 1 then
-- 移动端调整目标位置
targetX = -480 -- 或者根据你的布局计算一个合适的值
end
GUI:Timeline_MoveTo(topIcons, { x = targetX, y = 0 }, 0.2)
SL:print("chufaO")
end)
SL:CloseMiniMapChangeUI(function(topIcons)
local targetX = -665
if SL:GetMetaValue("CURRENT_OPERMODE") ~= 1 then
-- 移动端调整目标位置
targetX = -700 -- 这个值应与移动端在Main函数中设置的初始x坐标(-665)有差值才能看到移动效果
end
GUI:Timeline_MoveTo(topIcons, { x = targetX, y = 0 }, 0.2)
SL:print("chufaC")
end)
```
关键点是:**确保移动端在“关闭”事件中的目标位置(例如 `-700`)与其初始位置(`-665`)不同**,这样动画效果才会显现。你可以调整 `-700` 这个值以达到理想的收起位置。
← 返回问答库