2012-02-20 70 views
1

我使用TexturePacker。我收拾好紋理和我有這個文件:使用TexturePacker加載紋理(AndEngine)

  • 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) 

什麼是我的錯?

回答

2

我認爲問題在於您在執行onLoadResources()之前嘗試初始化Sprite spriteS

像這樣的東西可以幫助你:

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

您也可以移動精靈初始化到創建場景的方法。

P.S.這只是示例代碼。這並不意味着提供乾淨或良好的風格。