我想问一下有人知道如何在区间内用char绘制字符串char,例如0.25秒?
"H" (0.25sec) "e" (0.25sec) "l" (0.25sec) "l" (0.25sec) "o";
我使用drawText(x, y, String);
来绘制文字。
答案 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()