[英]How to draw text, char by char in LWJGL/Slick2D
我想問一個人知道如何在間隔(例如0.25秒)內逐字符繪制字符串?
"H" (0.25sec) "e" (0.25sec) "l" (0.25sec) "l" (0.25sec) "o";
我使用drawText(x, y, String);
繪制文字。
為了巧妙地做到這一點,建議您在游戲中使用update()方法。 對於每個更新刻度,您可以使用一個變量來計算經過增量多少毫秒(大約)(更新花費了多長時間),然后在確定的時間量(所需的速度)后加上字母添加字母)。
如果您想在整個游戲中使用它,我絕對建議您將其放入自己的類中,例如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,以便您可以更改所需的文本速度。
您可以使用System.nanoTime()測量經過的時間。
請參閱: http : //docs.oracle.com/javase/7/docs/api/java/lang/System.html#nanoTime()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.