local uiobj = FGUI:CreateObject(parent, "A_EquipDuanZao", title[index].script, true)
FGUI:setPositionX(uiobj, 8)
FGUI:setPositionY(uiobj, 55) 改坐标没变化
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-02-26 09:10:11 |
👁️ 阅读: 0
更改控件坐标后没有变化,可能是因为控件的位置受父容器布局、锚点设置或轴心点影响。请检查以下几点:
1. **确认父容器的坐标系统**:确保 `parent` 的坐标是有效的,并且 `uiobj` 的坐标是相对于父容器的本地坐标。
2. **检查控件锚点(Anchor)**:如果控件设置了锚点,其位置可能被自动调整。可以使用 `FGUI:setAnchorPoint(widget, x, y, asAnchor)` 调整轴心点和锚点,或将 `asAnchor` 设为 `false` 仅修改轴心点。
3. **验证控件是否已正确创建**:确保 `FGUI:CreateObject` 成功创建了控件,并且 `uiobj` 是有效的控件对象。
4. **考虑布局容器的影响**:如果 `parent` 是 `GList` 或 `GGroup` 等容器,可能需要调用 `FGUI:GGroup_setBoundsChangedFlag(widget, bPositionChangedOnly)` 或 `FGUI:GGroup_ensureBoundsCorrect(widget)` 来更新布局边界。
示例调整:
```lua
-- 设置坐标
FGUI:setPositionX(uiobj, 8)
FGUI:setPositionY(uiobj, 55)
-- 如果控件在组容器中,更新边界
FGUI:GGroup_setBoundsChangedFlag(parent, false)
FGUI:GGroup_ensureBoundsCorrect(parent)
```
如果问题仍存在,请检查是否有其他代码(如动画、控制器或事件)在后续修改了控件位置。
← 返回问答库