使用Nifty GUI和LWJGL创建形状

时间:2015-04-07 15:52:37

标签: java lwjgl nifty-gui

我正试图在LWJGL游戏中在屏幕上创建一个六边形。我正在使用Nifty GUI。我目前有2个屏幕,我想切换到我以编程方式绘制六边形的屏幕。

这是我的屏幕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">
<useStyles filename="nifty-default-styles.xml" />
<useControls filename="nifty-default-controls.xml" />
<screen id="start" controller="StartScreen">
    <layer id="background" childLayout="center">
        <image filename="util/img/menuTexture.png" />
    </layer>
    <layer id="title" childLayout="vertical">
        <image align="center" height="20%" width="80%" filename="util/img/title.png" />
        <panel id="subactions" childLayout="absolute" marginTop="40%" height="13%">
            <image align="left" height="100%" width="30%" x="0px" y="0px" filename="util/img/rules.png">
                <interact onClick="showRules()" />
            </image>
            <image align="right" height="100%" width="30%" x="70%" y="0px" filename="util/img/exit.png">
                <interact onClick="exitGame()" />
            </image>
        </panel>
        <image align="center" height="20%" width="80%" filename="util/img/start game.png" marginTop="5%">
            <interact onClick="startGame()" />
        </image>
    </layer>
</screen>
<screen id="rules" controller="StartScreen">
    <layer id="background" childLayout="center">
        <image filename="util/img/menuTexture.png" />
    </layer>
    <layer id="transparent" backgroundColor="#D1D1D1A7" childLayout="vertical">
        <panel id="rulesPanel" childLayout="center">
            <image filename="util/img/game rules.png" width="100%" height="100%" />
        </panel>
        <panel id="goToStartPanel" childLayout="center" width="100%" height="13%">
            <image height="100%" filename="util/img/exit.png">
                <interact onClick="goToStartScreen()" />
            </image>
        </panel>
    </layer>
</screen>

如何切换到这样的屏幕(我会使用nifty.gotoScreen()吗?)并初始化渲染循环?

任何示例代码都会有所帮助。非常感谢你。

1 个答案:

答案 0 :(得分:0)

是的,您总是使用nifty.gotoScreen()切换到不同的屏幕。

但我真的不了解绘图形状部分;)当前Nifty,1.3.x或1.4.x不支持自定义绘图到屏幕。但是没有人阻止你在调用nifty.render()之前或之后渲染其他东西,这会使得事物出现在Nifty呈现的元素的下方或上方。

如果你想在你自己绘制的Nifty屏幕上直接拥有一些元素,你唯一的机会就是抓住Nifty呈现的纹理并自己呈现给那个纹理(外面没有任何Nifty的帮助) 。 Nifty只会将纹理显示为图像元素,但您可以更改Nifty之外的纹理内容。

这有意义吗?