TexturePacker(AndEngine)でテクスチャをロードする
-
28-10-2019 - |
質問
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());
}
Spriteを定義すると、この行でエラーが発生します。
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)
私の間違いは何ですか?
解決
問題は、あなたが初期化しようとすることだと思います Sprite spriteS
前 onLoadResources()
実行されます。
このようなことはあなたを助けるかもしれません:
Textures textures;
Sprite spriteS;
...
@Override
public void onLoadResources() {
textures = new Textures(this, getEngine());
spriteS = new Sprite(50, 50, textures.getT());
}
また、Sprite initをシーンが作成される方法に移動する場合があります。
PSこれはコードの例のみです。クリーンなスタイルや良いスタイルを提供することを意図したものではありません。
所属していません StackOverflow