我想知道:
我有一个舞台,它拥有一个Actor类。我是否必须取消纹理和精灵?
public class SimpleImage extends Image {
protected Sprite sprite;
public SimpleImage(FileHandle file) {
super();
sprite = new Sprite(new Texture(file));
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
sprite.draw(batch);
batch.setColor(this.getColor());
}
@Override
public void act(float delta) {
super.act(delta);
}
@Override
protected void positionChanged() {
super.positionChanged();
sprite.setPosition(getX(), getY());
}
}
如何制作obj一次性用品?在Java库中有两个:MediaDisposer.Disposable和MediaDisposer.ResourceDisposer。
我什么时候需要制作obj一次性用品?
答案 0 :(得分:1)
您可能想申请separation of concerns。您的SimpleImage
课程不应该关心管理资产。因此,您不应该首先在Texture
课程中创建SimpleImage
。因此,你不应该处置它。
通过使用AssetManager来管理资产。
此外,您应该pack your images加入一个Texture
。这意味着您不能每Texture
使用一个SimpleImage
,而是使用一个Texture
用于多个SimpleImage
(或其他需要图像的类)
所以你应该重新考虑你的方法。那就是说,让我回答你的问题。
您需要处理实现Disposable接口的所有内容。 Texture实现了Disposable
界面,Sprite没有。
如果要使对象实现Disposable
接口,请使其实现Disposable
接口。如果您在导入时遇到问题,请com.badlogic.gdx.utils.Disposable
。 It's a libGDX interface并且与MediaDisposer无关。
当负责处置资源时,您可以使对象成为可处理对象。通常,这意味着负责在其创建的成员对象上调用.dispose()
方法。你不必让它们成为一次性的,只要你确保你处理你正在创造的资源,那就没事了。