Изящный макет графического интерфейса

Я новичок в игровом движке JME3, но я хорошо знаю макеты графического интерфейса Android XML. У меня здесь простой макет, и я не могу понять, что не так. Вот мой 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>

Everything works good until I get to displaying the text. I have tried different alignments and tried moving the text into different panels but no matter what I do the text is never in the center of the screen. Its always in the upper left corner so far I can only see the lower right part of the text. I'm sure it has to be something simple but since I'm new to this I'm not noticing anything. Thanks for the help in advance.


person Jason Crosby    schedule 16.10.2012    source источник
comment
может быть лучше на Разработка игр   -  person dardo    schedule 16.10.2012
comment
@dardo Используйте синтаксис [gamedev.se], чтобы получить ссылку в своем комментарии, как в разделе Разработка игр. Работает с любым сайтом SE. Также [sf] и [su] для ServerFault и SuperUser.   -  person Jim Garrison    schedule 16.10.2012


Ответы (1)


Вероятно, вы используете старую версию Nifty. Ваша первая панель с id="panel" использует childLayout="center" и имеет два дочерних элемента (изображение и другую панель). Это не поддерживалось в версиях Nifty до 1.3.1.

Вот цитата из Отличное руководство в формате PDF:

Еще одна вещь, которая была улучшена в Nifty 1.3.1, это то, что childLayout="center" теперь поддерживает более одного дочернего элемента! В версиях до 1.3.1 childLayout="center" поддерживал только один дочерний элемент, а с другими элементами происходили странные вещи. Теперь это также было улучшено, и childLayout="center" поддерживает более одного дочернего элемента.

Я попробовал ваш XML с Nifty 1.3.2, и текст находится в центре экрана.

PS: Не имеет отношения к вашей проблеме: не рекомендуется использовать один и тот же идентификатор для нескольких элементов (у вас есть две панели с id="panel"). Ничего страшного не произойдет (кроме предупреждения в журнале), но когда вы попытаетесь выполнить findElementByName(), вы можете получить какой-то неожиданный элемент.

person void256    schedule 15.11.2012