2016-09-22 5 views
1

おはようございます! 私はSlick2dでNifty Guiを試しています。 Nifty Guiの入力ポーリング以外はすべて正常に動作します。それはまったく反応しません!ここに私のコードの一部です:Nifty Guiは入力に反応しません

のXml:

<nifty xmlns="http://nifty-gui.lessvoid.com/nifty-gui"> 
    <screen id="GamePlay" controller="GamePlayScreenController"> 
     <layer childLayout="vertical"> 
      <panel id="roomListPanel" width="100%" height="32px" 
      childLayout="absolute-inside" padding="5px"> 

       <control id="appendButton" name="button" label="Pause"> 
      <interact onClick="test()" />  
     </control> 
      </panel> 
     </layer> 
    </screen> 
</nifty> 

のJava:

class GamePlayScreenController implements ScreenController { 
    public void bind(Nifty nifty, Screen screen) { 
     System.out.println("Bind"); 
    } 

    public void onEndScreen() { 
     System.out.println("End"); 
    } 

    public void onStartScreen() { 
     System.out.println("Start"); 
    } 

    public void test() { 
     System.out.println("Test"); 
    } 
} 

... 

// In my state class: 

this.nifty = new Nifty(new LwjglRenderDevice(), new NullSoundDevice(),  new LwjglInputSystem(), new TimeProvider()); 

this.nifty.loadStyleFile("nifty-default-styles.xml"); 
this.nifty.loadControlFile("nifty-default-controls.xml"); 
this.nifty.registerScreenController(new GamePlayScreenController()); 
this.nifty.fromXml("data/test.xml", "GamePlay"); 
this.nifty.gotoScreen("GamePlay"); 

... 

this.nifty.update(); 

... 

SlickCallable.enterSafeBlock(); 
this.nifty.render(false); 
SlickCallable.leaveSafeBlock(); 

それがない理由私は、何のアイデアを持っていません。助けてください!ありがとう!

答えて

0

これはあなたのために働く必要があります。

protected void initGameAndGUI(GameContainer arg0, StateBasedGame arg1) { 

    LwjglInputSystem inputSystem = new LwjglInputSystem(); 

    try { 
     inputSystem.startup(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }   
    PlainSlickInputSystem psis = new PlainSlickInputSystem(); 
    GameClient.app.getInput().addListener(psis);  

    prepareNifty(nifty, arg1); 
    nifty = new Nifty(new LwjglRenderDevice(), new NullSoundDevice(),psis, new AccurateTimeProvider()); 
    NullSoundDevice(),psis, new AccurateTimeProvider());  
    initNifty(arg0, arg1, psis);  
    nifty.fromXml("..."); 

} 

とofcourseのあなたのアップデート方法で

nifty.update(); 

私はSlick2d Niftyインテグレーションを使用していました。

0

startup()メソッドは、LwjglInputSystemで呼び出されましたか?それがどのように呼び出されるかについては、hereのサンプルコードがあります。これは、LwjglInputSystemを適切に初期化するために必要です。

ただし、ここで提供している既成のSlick2d統合クラスを使用しないでください:Slick2d Nifty-GUI classes? LWJGLに直接頼るのではなく、Nifty GUIをSlick2dに簡単に統合するのに適しているかもしれません。

+0

ありがとうございますが、解決策が機能しませんでした。うん、私はニフティ+スリック2d州を試してみたが、彼らは私を助けなかった。お返事ありがとう! –

関連する問題