2017-04-19 28 views
1

我正在使用Slick2D,LWJGL的包裝。我正嘗試對字符串的字體大小進行動畫/縮放,而不需要爲每個渲染創建新的Font和TrueTypeFont的性能成本。這是我目前有:如何在Slick2D中動畫字體大小,而不創建每個呈現的新字體實例?

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException { 
    Font pulsingFont = new Font("Verdana", Font.PLAIN, (int) Math.abs(Math.sin(frameCount) * 20) + 10); 
    TrueTypeFont pulsing = new TrueTypeFont(pulsingFont, true); 
    pulsing.drawString(200, 200, "Pulsing Text", Color.black); 
} 

public void update(GameContainer gc, StateBasedGame sbg, int DELTA) throws SlickException { 
    frameCount += 0.1; 
} 

我知道要改變字體大小的唯一方法是在字體,這意味着我還需要做出TrueTypeFont 每一幀的新實例。僅僅這些線條就會造成巨大的滯後。

那麼有沒有辦法讓動畫的字體大小,而不是每幀創建一個新的實例?

回答

1

是的,你可以縮放圖形組件。 雖然這會縮放所有內容,但確保在渲染文本後縮放它。

請注意,由於圖形比例的增加/減少,您將不得不調整您的x/y位置。

從Slick2d DOC: http://slick.ninjacave.com/javadoc/org/newdawn/slick/Graphics.html

scale(float sx, float sy) 
    Apply a scaling factor to everything drawn on the graphics context 

這意味着你可以擴張或收縮的圖形組件。 呈現您的文字。 將您的圖形組件恢復到正常狀態。 完成其餘的渲染。