【问题标题】:Libgdx - Image class disposeLibgdx - 图像类处理
【发布时间】:2016-11-01 07:59:13
【问题描述】:

我正在使用 LibGDX 在 Eclipse 上创建一个 Android 游戏。我创建了一个 Image 类的实例。我不确定我是否应该处理它。我是这样创建的;

img = new Image(new Texture("img.png"));

我也创建了一个纹理,但我找不到处理它的方法。我该怎么办?

【问题讨论】:

    标签: image libgdx textures dispose


    【解决方案1】:

    将您对一次性资产的唯一引用存储在游戏对象图中的一部分非常容易出错。使用 AssetManager,或者至少使用一个跟踪所有纹理和声音等的类(但说真的,使用 AssetManager——它具有内置的引用计数)。然后只有那个类必须处理所有 Disposables 的处理。你的actor可以有一个纹理的引用,但它不应该是唯一的引用,也不应该负责处理资产。

    assetManager.load("img.png", Texture.class);
    assetManager.finishLoading();
    
    img = new Image(assetManager.get("img.png", Texture.class));
    
    //...
    assetManager.dispose();
    

    【讨论】:

      【解决方案2】:

      好吧,看起来 Texture 实现了 disposeable ,所以这将是需要被释放的原生对象。你可以通读this documentation.

      您创建了一个带有匿名纹理的图像,这意味着您没有可以引用它的名称,因此您无法处理它。您的纹理资源需要在代码中的某处引用,以便您可以在适当的时间处理它。通常我会有一个静态资产类,它在需要时(停止应用程序时)处理所有资产。像 Image 这样的类使用这些资产,但他们不必担心处置它们。希望对您有所帮助。

      【讨论】:

      • 感谢您的回答。我需要img 成为演员,以便我可以将其添加到我的舞台。为了不用担心处理纹理,我可以使用哪个类?
      • @Barodapride 最好按照 tenfour04 的建议使用 AssetManager。它处理加载和处理,使其更易于管理
      猜你喜欢
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 2011-04-22
      相关资源
      最近更新 更多