如何使用Slick显示文本?

时间:2012-06-21 18:53:51

标签: java slick2d

我一直试图用ninjacave的教程和很多其他人来展示文字,但我无法让它发挥作用。 有人可以给我一个有用的教程链接吗? 感谢。

代码如下:

主类:

package oregon.client;

import oregon.src.*;

import org.lwjgl.*;
import org.lwjgl.opengl.*;

import static org.lwjgl.opengl.GL11.*;

public class Oregon {
    public static Settings settings = new Settings();

    public GameController controls = new GameController();

    public FPSCounter fps = new FPSCounter();

    public void init() {
        try {
            if (settings.fullscreen) {
                Display.setDisplayModeAndFullscreen(Display
                        .getDesktopDisplayMode());
            } else if (!settings.fullscreen) {
                Display.setDisplayModeAndFullscreen(new DisplayMode(
                        settings.defaultWidth, settings.defaultHeight));
            }

            Display.setVSyncEnabled(true);
            Display.create();
        } catch (LWJGLException e) {
            stop(e);
        }

        initOpenGL();
        start();
    }

    public void initOpenGL() {
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, settings.defaultWidth, settings.defaultHeight, 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
    }

    public void debug() {     

    }

    public void openGL() {

    }

    public void start() {
        while (!Display.isCloseRequested()) {
            controls.keyboard();
            fps.tick();

            debug();
            openGL();

            Display.update();
            Display.sync(100);
        }

        Display.destroy();
    }

    public static void stop() {
        System.exit(0);
        Display.destroy();
    }

    public static void stop(Exception e) {
        e.printStackTrace();
        System.exit(0);
        Display.destroy();
    }

    public static void setFullscreen() {
        try {
            Display.setDisplayModeAndFullscreen(Display.getDesktopDisplayMode());
        } catch (LWJGLException e) {
            stop(e);
        }
    }

    public static void removeFullscreen() {
        try {
            Display.setDisplayModeAndFullscreen(new DisplayMode(
                    settings.defaultWidth, settings.defaultHeight));
        } catch (LWJGLException e) {
            stop(e);
        }
    }

    public static void main(String args[]) {
        Oregon oregon = new Oregon();
        oregon.init();
    }
}

这是主要类的代码。

编辑: - 这是我用Jesse B的代码得到的图片。 enter image description here

3 个答案:

答案 0 :(得分:3)

DavidB在他的回答中使用graphics实例提到了drawString()。这将使用您当前的字体。这意味着您应该先调用graphics.setFont(),否则它将使用默认的系统字体。这也使得很难记住(在游戏的各种方法中)哪种是“当前”字体。

或者,您可以初始化字体实例并将其直接用于drawString。来自Slick2D Wiki ...

// initialise the font
Font font = new Font("Verdana", Font.BOLD, 20);
TrueTypeFont trueTypeFont = new TrueTypeFont(font, true);

// render some text to the screen
trueTypeFont.drawString(20.0f, 20.0f, "Slick displaying True Type Fonts", Color.green);

这要求所有支持的平台都可以解析字体名称。更好的选择是将字体放在JAR中,方法是将其放在资源目录中。

修改
看到你发布的图片后,我的猜测是你没有正确加载字体。试试这个......

graphics.drawString("Test drawing string.",20.0f,20.0f);

如果这样可行,则确认字体无法正常工作。如果要使用自定义字体,则必须将字体文件添加到JAR中并将其作为资源引用。

答案 1 :(得分:3)

下载Slick2D库并导入jar。

在课堂上覆盖全班的范围:

Font font;
TrueTypeFont ttf;

您的初始化方法

public void init(GameContainer gc){

    font = new Font("Verdana", Font.BOLD, 20);
    ttf = new TrueTypeFont(font, true);

}

你的渲染方法:

public void render(GameContainer gc, Graphics g){

    //render code here
    ttf.drawString("Hello, World!")

}

答案 2 :(得分:2)

According to this tutorial,您可以使用drawString方法从图形对象中调用render

g.drawString("Hello World!",200,200);