如何在LWJGL / Slick2D中通过char绘制文本,char

时间:2014-03-10 12:15:05

标签: java string text lwjgl slick2d

我想问一下有人知道如何在区间内用char绘制字符串char,例如0.25秒?

"H" (0.25sec) "e" (0.25sec) "l" (0.25sec) "l" (0.25sec) "o";

我使用drawText(x, y, String);来绘制文字。

2 个答案:

答案 0 :(得分:1)

为了在光滑中做得很好,我建议在游戏中使用update()方法。对于每个更新刻度,您可以使用变量计数与delta一起传递了多少毫秒(近似值)(更新所需的时间),然后在确定的时间量(您想要的速度)之后添加一个字母添加字母)。

如果您希望这是您将在整个游戏中使用的内容,我绝对建议您将其添加到自己的类中,例如messageFeed或messageWriter或者您希望调用它的任何内容。

这是我写的一个简单例子:

public class TextFieldTest extends BasicGameState{

    private int stateId = 0;
    String text = "This is a line of text blah blah blah";
    String currentText = "";
    int count = 0;
    int index = 0;

    public TextFieldTest(int State) {
        this.stateId = State;
    }

    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{

    }

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
        g.drawString(currentText, 40, 40);
    }

    public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{
        if(count < 25) {
            count+=delta;
        } else {
            count = 0;
            if(index < text.length()) {
                currentText += text.charAt(index++);
            }
        }
    }

    public int getID(){
        return this.stateId;
    }
}

在这个例子中,我使用25作为我的阈值,一旦我打破了这个阈值,我就会添加一个要显示的新字母,然后重新开始计算。比使用系统时间更容易,因为光滑已经为您获得了增量。你可以乱用这个例子来得到你想要的,你甚至可以用一个变量代替25,这样你就可以改变你想要的文本速度。

答案 1 :(得分:0)

您可以使用System.nanoTime()测量已用时间。

请参阅:http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime()