簡體   English   中英

如何在LWJGL / Slick2D中按字符繪制文本char

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM