MainMiniMap = {}
MainMiniMap._showState = false
-- 战斗模式的图片
MainMiniMap._Pics = {
[0] = "res/private/main/Pattern/1900012200.png",
[1] = "res/private/main/Pattern/1900012201.png",
[2] = "res/private/main/Pattern/1900012206.png",
[3]
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-06-18 15:28:46 |
👁️ 阅读: 8
从代码分析来看,PK模式按钮位置偏移的问题出现在 `HidePKModeCells()` 函数中的位置计算逻辑。
问题原因:
1. 在 `ShowPKModeCells()` 中,按钮被移动到 `btnActionX = - width - mapBGWidth` 位置
2. 但在 `HidePKModeCells()` 中,按钮被移动到 `btnActionX = -mapBGWidth` 位置
3. 缺少了 `width` 的偏移量补偿
修复方案:
在 `HidePKModeCells()` 函数中,需要计算当前展开的PK模式列表宽度,确保按钮回到正确位置:
```lua
function MainMiniMap.HidePKModeCells()
local pkCell = MainMiniMap._PKModelCell
if not pkCell then
return false
end
GUI:Win_SetParam(MainMiniMap._PKModelButton, false)
local buttonSize = GUI:getContentSize(MainMiniMap._PKModelButton)
local mapBGWidth = GUI:getContentSize(MainMiniMap._ui["MapBG"]).width
local cSize = MainMiniMap._cSize
local width = GUI:ListView_getItemCount(MainMiniMap._PKModelListView) * cSize.width
local posY = GUI:getPositionY(MainMiniMap._PKModelButton)
-- 关键修改:计算正确的按钮位置
local btnActionX = -mapBGWidth - width -- 添加宽度偏移
local pkActionX = -mapBGWidth + width
GUI:stopAllActions(MainMiniMap._PKModelButton)
GUI:runAction(MainMiniMap._PKModelButton,
GUI:ActionEaseBackOut(GUI:ActionMoveTo(0.2, btnActionX, posY)))
GUI:stopAllActions(MainMiniMap._PKModelCell)
GUI:setPositionX(MainMiniMap._PKModelCell, -mapBGWidth)
GUI:runAction(MainMiniMap._PKModelCell,
GUI:ActionSequence(
GUI:ActionEaseBackOut(GUI:ActionMoveTo(0.2, pkActionX, GUI:getPositionY(MainMiniMap._PKModelCell))),
GUI:ActionHide()
)
)
end
```
主要修改点:
1. 第15行:`btnActionX = -mapBGWidth - width` 添加了宽度偏移
2. 这样按钮在收起时会回到与展开时对应的位置,避免像素偏移
这个修改确保了按钮在展开和收起时的位置计算逻辑一致,解决了位置串动的问题。
← 返回问答库