首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >漂亮的Gui不会对输入做出反应

漂亮的Gui不会对输入做出反应
EN

Stack Overflow用户
提问于 2016-09-22 17:14:18
回答 2查看 109关注 0票数 1

早上好!我正在和Slick2d一起尝试漂亮的图形用户界面。除了Nifty Gui的输入轮询之外,一切都正常工作。它一点反应都没有!下面是我的代码的一部分:

Xml:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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();

我不知道,为什么它不是。求求你,救命!谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-24 15:27:48

这对你来说应该是可行的:

代码语言:javascript
复制
    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("...");

}

当然还有

代码语言:javascript
复制
nifty.update();

在你的update方法中。

我使用的是Slick2d漂亮的集成。

票数 0
EN

Stack Overflow用户

发布于 2016-09-25 21:06:02

那么你在LwjglInputSystem上调用startup()方法了吗?关于如何调用它,我们有可用的示例代码here。这是正确初始化LwjglInputSystem所必需的。

但是,您为什么不使用我们这里提供的现成的Slick2d集成类:Slick2d Nifty-GUI classes?它们可能更适合于轻松地将Nifty GUI与Slick2d集成,而不是直接依赖LWJGL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39634918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档