漂亮的GUI布局

时间:2012-10-16 17:22:01

标签: java jmonkeyengine nifty-gui

我是JME3游戏引擎的新手,但我知道Android XML GUI布局非常好。我在这里有一个简单的布局,我无法弄清楚出了什么问题。这是我的XML代码:

<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd
                       http://nifty-gui.sourceforge.net/nifty-1.3.xsd">

<useControls filename="nifty-default-controls.xml" />
<useStyles filename="nifty-default-styles.xml" />

<screen id="start" controller="com.jasoncrosby.game.farkle.gui.MenuScreenGui">
    <layer id="layer" backgroundColor="#66CD00" childLayout="center">
        <panel id="panel" align="center" valign="center" childLayout="center" visibleToMouse="true">
            <image filename="Textures/wood_floor.png" height="95%" width="95%"/>

            <panel id="panel" align="center" valign="center" childLayout="center" visibleToMouse="true">
                <text text="test" font="Interface/Fonts/Eraser.fnt"></text>
            </panel>
        </panel>
    </layer>
</screen>

在我显示文本之前,一切正常。我尝试过不同的对齐方式并尝试将文本移动到不同的面板中,但无论我做什么,文本都不会出现在屏幕的中央。它总是在左上角到目前为止我只能看到文本的右下角。我敢肯定它必须是简单的东西但是因为我是新手,所以我没有注意到任何事情。感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

你可能正在使用旧的Nifty版本。你的第一个id =“panel”的面板使用childLayout =“center”,它有两个子元素(一个图像和另一个面板)。在1.3.1之前的Nifty版本中不支持此功能。

以下是Nifty Manual PDF

的引用
  

Nifty 1.3.1中改进的另一件事是   childLayout =“center”现在支持多个子元素!在   1.3.1之前的版本childLayout =“center”只支持单个版本   子元素和奇怪的事情会发生在其他元素上。这个   现在也得到了改进,而且childLayout =“center”支持更多   而不是一个孩子元素。

我已经使用Nifty 1.3.2尝试了您的XML,并且文本位于屏幕的中心。

PS:与您的问题无关:对多个元素使用相同的ID并不是一个好主意(您有两个id =“panel”的面板)。没有什么不好的事情发生(除了日志中的警告)但是当你尝试做一个findElementByName()时,你可能会得到一些意想不到的元素。