Загрузка текстур с помощью TexturePacker (AndEngine) - PullRequest
1 голос
/ 20 февраля 2012

Я использую 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());
}

Определить спрайт и Iполучить ошибку в этой строке:

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)

В чем моя ошибка?

1 Ответ

2 голосов
/ 20 февраля 2012

Я предполагаю, что проблема в том, что вы пытаетесь инициализировать Sprite spriteS до выполнения onLoadResources().

Что-то вроде этого может вам помочь:

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

Вы также можетепереместите инициал спрайта в метод, где создается сцена.

PS Это только пример кода.Он не предназначен для обеспечения чистого или хорошего стиля.

...