2012-10-16 2 views
1

Я новичок в игровом движке JME3, но я хорошо разбираюсь в макетах графического интерфейса Android XML. У меня здесь простой макет, и я не могу понять, что не так. Вот мой XML-код:Nifty GUI Layout

<?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

может быть лучше на [gamedev.se] – dardo

+0

@dardo Используйте синтаксис '[gamedev.se]', чтобы получить ссылку в вашем комментарии, как в [gamedev.se]. Работает с любым сайтом SE. Также '[sf]' и '[su]' для ServerFault и SuperUser. –

+0

thx для наконечника =) – dardo

ответ

3

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

Вот цитата из Nifty Manual PDF:

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

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

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

Смежные вопросы