1

我目前正在使用 LibGDX 开发一个 android 应用程序,并将我的内存泄漏确定为这种方法。谁能帮我弄清楚这是从哪里来的?我曾尝试回顾原生 LibGDX 方法,但仍然无法找到泄漏的位置。谢谢

private void drawScore() {
    scoreLength = ("" + myWorld.getScore()).length();
    AssetLoader.shadow.draw(batcher, "" + myWorld.getScore(),
            165 - (3 * scoreLength), midPointY - 82);
    AssetLoader.font.draw(batcher, "" + myWorld.getScore(),
            165 - (3 * scoreLength) - 1, midPointY - 83);
}
4

1 回答 1

0

最好的办法是预先计算所有数据,以便渲染不会执行任何字符串连接或其他操作。

所以当分数改变时:

  1. 更新分数字符串并将其存储在字段中;
  2. 计算位置并将其存储在Vector2字段中。

仅使用字段中drawScore的数据进行绘制。

您还可以检查GlyphLayout以更好地计算字符串的位置。应用与以前相同的原则,不要在绘制时使用新的或计算,而是在分数变化时执行它们。

于 2016-10-14T08:55:04.797 回答