你如何/为什么要在另一堂课中处理某些事情?

时间:2015-09-29 17:19:17

标签: java libgdx

为什么你可以处理这样的精灵纹理:sprite.getTexture().dispose();

由于java,你不是按值(副本)得到纹理,你不会只是处理纹理的副本吗?我在这里误解了一些东西。

2 个答案:

答案 0 :(得分:4)

Sprite继承自TextureRegion,而TextureRegion.getTexture()的实施方式如下:

public Texture getTexture () {
        return texture;
}

所以不,你没有得到副本,而是对精灵纹理的引用。通过调用dispose(),您将处理精灵纹理。

答案 1 :(得分:0)

您将获得对java中对象的引用,而不是值。但是在libGDX中使用dispose()及其接口Disposable还有另一个原因。 libGDX处理的一些资源(其中包含纹理)不必位于JVM的范围内。例如,纹理的像素图可以在堆上或在视频存储器中。您将通过调用dispose()来释放该资源。每当你不再需要Disposable资源时,你应该这样做,以防止泄漏。