I have jme2 application and want to use niftygui 1.3 for ui part. I created my XML ui file and controller which starts succesfully but when I click to button nothing happens.
XML
[xml]<?xml version="1.0" encoding="UTF-8"?>
<nifty>
<useStyles filename="nifty-default-styles.xml" />
<useControls filename="nifty-default-controls.xml" />
<screen id="start" controller="lamao.soh.ui.controllers.TestNiftyScreenController">
<layer id="mainLayer" childLayout="vertical" align="center">
<panel id="SPACER" height="25%" width="100%" align="center" backgroundColor="#0000" childLayout="center" visibleToMouse="false"/>
<panel id="menuPanel" style="nifty-panel" childLayout="vertical" align="center" valign="center" width="50%" height="50%">
<effect>
<onStartScreen name="move" mode="in" direction="top" length="300" startDelay="0" inherit="true"/>
<onEndScreen name="move" mode="out" direction="bottom" length="300" startDelay="0" inherit="true"/>
<onHover name="pulsate" scaleFactor="0.008" startColor="#EE7F" endColor="#EE7F" post="true"/>
</effect>
<panel id="SPACER1" height="5%" width="100%" align="center" backgroundColor="#0000" childLayout="center" visibleToMouse="false"/>
<panel id="gameStart" height="44%" width="90%" align="center" backgroundColor="#BBBF" childLayout="center" visibleToMouse="true">
<control id="btnStart" name="button" label="Start Game" align="center" valign="center" width="100%" height="100%">
<interact onClick="quit()"/>
</control>
</panel>
<panel id="SPACER2" height="2%" width="100%" align="center" backgroundColor="#0000" childLayout="center" visibleToMouse="false"/>
<panel id="gameExit" height="44%" width="90%" align="center" backgroundColor="#BBBF" childLayout="center" visibleToMouse="true">
<control id="btnExit" name="button" label="Exit" align="center" valign="center" width="100%" height="100%"
visibleToMouse="true">
<interact onClick="quit"/>
</control>
</panel>
<panel id="SPACER2" height="5%" width="100%" align="center" backgroundColor="#0000" childLayout="center" visibleToMouse="false"/>
</panel>
<panel id="SPACER" height="25%" width="100%" align="center" backgroundColor="#0000" childLayout="center" visibleToMouse="false"/>
</layer>
</screen>
</nifty>[/xml]
controller
[java]/**
- TestNiftyScreenController.java 15.11.2012
*
- Copyright 2012 Stones of History
- All rights reserved.
*/
package lamao.soh.ui.controllers;
import java.util.logging.Logger;
import sun.util.logging.resources.logging;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.screen.DefaultScreenController;
import de.lessvoid.nifty.screen.Screen;
import de.lessvoid.nifty.screen.ScreenController;
/**
-
@author lamao
*
*/
public class TestNiftyScreenController extends DefaultScreenController
{
private static final Logger LOGGER = Logger.getLogger(TestNiftyScreenController.class.getCanonicalName());
private Nifty nifty;
private Screen screen;
/**
- {@inheritDoc}
*/
@Override
public void bind(Nifty nifty, Screen screen)
{
this.nifty = nifty;
this.screen = screen;
}
/**
- {@inheritDoc}
*/
@Override
public void onEndScreen()
{
LOGGER.warning("onEndScreen is called");
}
/**
- {@inheritDoc}
*/
@Override
public void onStartScreen()
{
LOGGER.info("onStartScreen is called");
}
public void quit()
{
LOGGER.info("QUIT is called");
}
}
[/java]
main class
[java]/**
- SHMain.java 25.03.2010
*
- Copyright 2010 Stones of History
- All rights reserved.
*/
package lamao.soh;
import java.io.File;
import lamao.soh.core.SHGamePack;
import lamao.soh.core.SHScene;
import lamao.soh.core.SHScripts;
import lamao.soh.states.SHLevelState;
import lamao.soh.ui.controllers.TestNiftyScreenController;
import lamao.soh.utils.deled.SHSceneLoader;
import lamao.soh.utils.events.SHEventDispatcher;
import com.jmex.game.StandardGame;
import com.jmex.game.state.BasicGameState;
import com.jmex.game.state.GameStateManager;
import de.lessvoid.nifty.Nifty;
import de.lessvoid.nifty.jme.input.JmeInputSystem;
import de.lessvoid.nifty.jme.render.JmeRenderDevice;
import de.lessvoid.nifty.jme.sound.JmeSoundDevice;
import de.lessvoid.nifty.tools.TimeProvider;
/**
- Enter point into the program.
-
@author lamao
*
*/
public class SHMain
{
private static StandardGame GAME = null;
public static void main(String args[])
{
GAME = new StandardGame("Stones of History");
GAME.start();
NiftyState niftyState = new NiftyState("menu");
GameStateManager.getInstance().attachChild(niftyState);
niftyState.setActive(true);
}
static class NiftyState extends BasicGameState {
Nifty nifty;
/**
-
@param name
/
public NiftyState(String name)
{
super(name);
nifty = new Nifty(new JmeRenderDevice(), new JmeSoundDevice(),
new JmeInputSystem(), new TimeProvider());
nifty.fromXml("data/nifty/main.xml", "start", new TestNiftyScreenController());
nifty.registerMouseCursor("default", "data/cursors/cursor-default.png", 15, 15);
nifty.getNiftyMouse().enableMouseCursor("default");
}
/ (non-Javadoc)
-
@see com.jmex.game.state.BasicGameState#render(float)
*/
@Override
public void render(float tpf)
{
super.render(tpf);
nifty.render(false);
}
}
}
[/java]