找回密码
 点一下
查看: 464|回复: 5

帮忙看看哪里错了

[复制链接]
发表于 2014-9-25 19:36:38 | 显示全部楼层 |阅读模式
本帖最后由 yxxiaobin 于 2014-9-25 20:00 编辑

最近试着做UI。想把命令按钮弄成一列,居中显示在窗口底部。首先在UI编辑器里边自定义布局文件如下:
  1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
  2. <Desc>
  3.     <Frame type="Frame" name="GameUI/UIContainer/ConsoleUIContainer" file="GameUI">
  4.         <Frame type="CommandPanel" name="CommandPanel" template="CommandPanel/CommandPanelTemplate">
  5.             <Anchor side="Bottom" relative="$parent" pos="Max" offset="-18"/>
  6.             <Anchor side="Right" relative="$parent" pos="Max" offset="1"/>
  7.             <Height val="80"/>
  8.             <Width val="1158"/>

  9.             <Frame type="CommandTooltip" name="CommandTooltip" template="CommandButton/CommandTooltipTemplate">
  10.                 <Anchor side="Bottom" relative="$parent" pos="Max" offset="-270"/>
  11.                 <Anchor side="Right" relative="$parent" pos="Max" offset="0"/>
  12.             </Frame>

  13.             <Frame type="CommandButton" name="CommandButton05" template="CommandButton/CommandButtonTemplate">
  14.                 <Anchor side="Top" relative="$parent/CommandButton04" pos="Min" offset="0"/>
  15.                 <Anchor side="Left" relative="$parent/CommandButton04" pos="Max" offset="#CommandButtonGap"/>
  16.             </Frame>

  17.             <Frame type="CommandButton" name="CommandButton10" template="CommandButton/CommandButtonTemplate">
  18.                 <Anchor side="Top" relative="$parent/CommandButton09" pos="Min" offset="0"/>
  19.                 <Anchor side="Left" relative="$parent/CommandButton09" pos="Max" offset="#CommandButtonGap"/>
  20.             </Frame>
  21.         </Frame>
  22.     </Frame>
  23. </Desc>
复制代码


测试成功了,但是这个无法居中(或者说我不会让他居中,只会设定绝对值)。于是想到用对话框创建它,但是发现创建不了,创建原版的CommandPanel就没问题。

我想问的是:是我方法不对,还是对话框只能创建原版的控件呢?


 楼主| 发表于 2014-9-25 20:05:17 | 显示全部楼层
另问一下,pos="Max" 和pos="Min"分别是什么意思?
回复

使用道具 举报

发表于 2014-9-25 20:48:18 | 显示全部楼层
以前不是有很多相关教程了嘛?

Min代表被依附的对象的最小坐标,而Max代表最大。具体是x还是y取决于你所帖靠的边。

比如你底边去贴一个目标框体,那么Mix自然是代表目标框体的上边了。Max自然是下。 同理,如果你是左右两条边去帖,那么Min就变成了目标框体的左边,而Max变成了右边。

点评

以前的教程可能因版本更新等原因,打开后测试会报错,我对UI属于绝对未入门级别,所以不敢一上来就看带bug的教程。 不过看了你的回复我觉得貌似看懂一些了。其实我原来以为left是指的左对齐,就是自己左侧对准父框  详情 回复 发表于 2014-9-25 23:32
回复

使用道具 举报

 楼主| 发表于 2014-9-25 23:32:22 | 显示全部楼层
麦德三世 发表于 2014-9-25 20:48
以前不是有很多相关教程了嘛?

Min代表被依附的对象的最小坐标,而Max代表最大。具体是x还是y取决于你所 ...

以前的教程可能因版本更新等原因,打开后测试会报错,我对UI属于绝对未入门级别,所以不敢一上来就看带bug的教程。
不过看了你的回复我觉得貌似看懂一些了。其实我原来以为left是指的左对齐,就是自己左侧对准父框体的左侧,结果四边全理解错了。后边的越看越迷糊。
不过现在还是不明白,MinimapPanel 和 InfoPanel 的父级框体是同一个,都设成<Anchor side="left" relative="$parent" pos="Min" offset="0"/>时,理论上他们的左侧应该和父级框体的左侧是对齐的,但实际上却不是,InfoPanel 明显比 MinimapPanel 更靠右,这个不知道为啥。
回复

使用道具 举报

发表于 2014-9-26 11:06:04 | 显示全部楼层
InfoPanel默认是居中对齐啊。

顺便,如果你想要让一个frame水平居中的话,就让左右两边都贴靠Mid。然后你设置一个框体长度即可。如果是Label的话甚至不用设长度,因为默认它会随着字符自适应。

同理,垂直居中的话就让上下两条边贴靠Mid

点评

我在研究研究,似乎入一点门了。  详情 回复 发表于 2014-9-27 12:56
回复

使用道具 举报

 楼主| 发表于 2014-9-27 12:56:38 | 显示全部楼层
麦德三世 发表于 2014-9-26 11:06
InfoPanel默认是居中对齐啊。

顺便,如果你想要让一个frame水平居中的话,就让左右两边都贴靠Mid。然后 ...

我在研究研究,似乎入一点门了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-13 09:17 , Processed in 0.135464 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表