【问题标题】:Load textures with TexturePacker (AndEngine)使用 TexturePacker (AndEngine) 加载纹理
【发布时间】:2012-02-20 12:23:23
【问题描述】:

我使用 TexturePacker。我打包了我的纹理,我有这个文件:

  • sample.png
  • sample.tps
  • sample.xml
  • sample.java

这些资源是assets/gfx/sample。我连接到项目sample.java
我有这个代码:

Textures.java

public class Textures {

private ITexture mSpritesheetTexture;
private TexturePackTextureRegionLibrary mSpritesheetTexturePackTextureRegionLibrary;
private TextureRegion faceTextureRegion;
private TexturePack spritesheetTexturePack;

public Textures(final BaseGameActivity activity, final Engine engine) {
    try {
        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
        this.spritesheetTexturePack = new TexturePackLoader(activity, "sample/").loadFromAsset(activity, "faces.xml");
        this.mSpritesheetTexture = spritesheetTexturePack.getTexture();
        this.mSpritesheetTexturePackTextureRegionLibrary = spritesheetTexturePack.getTexturePackTextureRegionLibrary();
        this.faceTextureRegion = this.mSpritesheetTexturePackTextureRegionLibrary.get(faces.FACES_ID);

        engine.getTextureManager().loadTexture(this.mSpritesheetTexture);
    } catch (final TexturePackParseException e) {
        Log.e("Error", String.valueOf(e));
    }
}

public TextureRegion getT(){
    return faceTextureRegion;
}

}

Main.java

...
Textures textures;
...
@Override
public void onLoadResources() {
    textures = new Textures(this, getEngine());
}

定义精灵,我在这一行得到一个错误:

final Sprite spriteS = new Sprite(50, 50, textures.getT());  

E/AndroidRuntime(391): Caused by: java.lang.NullPointerException
E/AndroidRuntime(391): at com.web.scene.AboutScene.<init>(AboutScene.java:24)

我的错误是什么?

【问题讨论】:

    标签: android andengine texturepacker


    【解决方案1】:

    我认为问题在于您尝试在执行 onLoadResources() 之前初始化 Sprite spriteS

    这样的事情可能会对你有所帮助:

    Textures textures;
    Sprite spriteS;
    ...
    @Override
    public void onLoadResources() {
        textures = new Textures(this, getEngine());
        spriteS = new Sprite(50, 50, textures.getT());  
    }
    

    您也可以将 sprite init 移动到创建场景的方法中。

    附:它只是示例代码。它并不意味着提供干净或良好的风格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      相关资源
      最近更新 更多