如何在Slick2D中为字体大小设置动画,而不是每次渲染都创建一个新的字体实例?

时间:2017-04-19 05:03:11

标签: java performance animation lwjgl slick2d

我在Slick2D工作,这是LWJGL的包装器。我尝试动画/缩放字符串的字体大小,而没有每次渲染创建新Font和TrueTypeFont的性能成本。这就是我目前所拥有的:

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;
}

我知道更改为字体大小的唯一方法是使用Font,这意味着我还需要为每一帧创建一个TrueTypeFont 的新实例。仅这些线条就会导致大量滞后。

那么有没有办法动画字体大小而不是每帧都创建一个新实例?

1 个答案:

答案 0 :(得分: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

这意味着您可以放大或缩小图形组件。 渲染文字。 将图形组件重新调整为正常。 做剩下的渲染。