1

我是 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>

一切正常,直到我开始显示文本。我尝试了不同的对齐方式并尝试将文本移动到不同的面板中,但无论我做什么,文本都不会位于屏幕的中心。到目前为止,它始终位于左上角,我只能看到文字的右下角。我确信它必须是一些简单的东西,但由于我是新手,所以我没有注意到任何东西。我在这里先向您的帮助表示感谢。

4

1 回答 1

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() 时,您可能会遇到一些意想不到的元素。

于 2012-11-15T21:59:39.267 回答