local disanPos = GUI:getContentSize(disan)
local beimian = GUI:Button_Create(disan, "bt1", disanPos.width/2-70, disanPos.height/2-300, "res/yuding/donghua/2.png")
修改分辨率 为什么按钮的位置不固定
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-20 10:30:52 |
👁️ 阅读: 7
根据浮生梦老师前端课程内容,按钮位置不固定的原因是`GUI:getContentSize(disan)`获取的是父节点的尺寸,但按钮的坐标计算依赖于父节点的当前尺寸,而父节点的尺寸可能因分辨率变化而改变。
正确的做法是使用锚点或相对布局来固定位置。以下是修改后的代码示例:
```lua
-- 获取父节点尺寸
local disanSize = GUI:getContentSize(disan)
local parentWidth = disanSize.width
local parentHeight = disanSize.height
-- 创建按钮,使用相对位置计算
local beimian = GUI:Button_Create(disan, "bt1",
parentWidth/2 - 70,
parentHeight/2 - 300,
"res/yuding/donghua/2.png")
-- 设置锚点为中心(推荐方式)
GUI:setAnchorPoint(beimian, 0.5, 0.5)
-- 或者使用百分比布局
-- GUI:setPositionPercent(beimian, 0.5, 0.5) -- 50%位置
```
**问题分析:**
1. `disanPos.width/2-70` 和 `disanPos.height/2-300` 是绝对像素值计算
2. 当分辨率改变时,`disan`的尺寸变化,但按钮的偏移量(70,300)不变
3. 导致按钮在屏幕上的相对位置发生变化
**建议解决方案:**
1. 使用锚点固定相对位置
2. 使用百分比布局函数(如果引擎支持)
3. 在分辨率变化时重新计算位置
如果还有问题,可以检查父节点`disan`的创建方式和尺寸设置。
← 返回问答库