2017-04-19 18 views
1

私はSlick2D、LWJGLのラッパーで作業しています。私は、文字列のフォントサイズをアニメーション化/スケールアップしようとしていますが、新しいフォントと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ドキュメントから

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 

。 テキストをレンダリングします。 グラフィックスコンポーネントを通常の状態に戻します。 残りのレンダリングを行います。

関連する問題