2016-08-04 9 views
2

Я использую AndEngine GLES2, и я пытался загрузить изображение на моем телефоне, но то, что я получил черный экранTrouble загрузки растрового изображения текстуры атлас на экране

Вот мой код ниже:

public class BaseActivity extends SimpleBaseGameActivity { 

static final int CAMERA_WIDTH = 800; 
static final int CAMERA_HEIGHT = 480; 

public Font mFont; 
public Camera mCamera; 

private MainMenuScene mainMenuScene; 
public Engine mEngine; 
public Scene mScene; 
public BuildableBitmapTextureAtlas mBitmapTextureAtlas; 
public ITextureRegion mITextureRegion; 



@Override 
public EngineOptions onCreateEngineOptions() { 

    instance = this; 
    mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

    return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); 
} 

@Override 
protected void onCreateResources() { 

    mFont = FontFactory.create(this.getFontManager(), this.getTextureManager(), 256, 256, Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32); 
    mFont.load(); 

    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); 
    mBitmapTextureAtlas = new BuildableBitmapTextureAtlas(this.getTextureManager(), 256, 256, TextureOptions.BILINEAR); 
    mITextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mBitmapTextureAtlas, this, "splash1.png"); 
    try { 
     mBitmapTextureAtlas.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 1, 1)); 
    } catch (TextureAtlasBuilderException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    mBitmapTextureAtlas.load(); 
} 

@Override 
protected Scene onCreateScene() { 

    final float positionX = CAMERA_WIDTH * 0.5f; 
    final float positionY = CAMERA_HEIGHT * 0.5f; 
    Sprite mSprite = new Sprite(positionX, positionY, mITextureRegion, mEngine.getVertexBufferObjectManager()); 
    mScene.attachChild(mSprite); 
    return mCurrentScene; 
} 

Logcat показывает, что у меня есть исключение nullPointerException в моих onCreateResources и onCreateScene, и я не знаю, что пошло не так. Что может быть проблемой?

ответ

0

Одна из ошибок заключалась в том, что вы никогда не создавали объект Scene, а затем пытались прикрепить к нему спрайт, а другой - в том, что VertexbufferObjectManager не относится к классу Engine, а относится к классу SimpleBaseGameActivity. onCreateScene() становится:

@Override 
    protected Scene onCreateScene() { 

     mScene = new Scene(); 
     final float positionX = CAMERA_WIDTH * 0.5f; 
     final float positionY = CAMERA_HEIGHT * 0.5f; 
     Sprite mSprite = new Sprite(positionX, positionY, mITextureRegion, getVertexBufferObjectManager()); 
     mScene.attachChild(mSprite); 
     return mScene; 
    } 

Я также заметил некоторые переменные, чтобы сделать его построить, хотя я подозреваю, что это из-за зачистки вниз ваш образец кода:

//  private MainMenuScene mainMenuScene; 
//  instance = this; 

 Смежные вопросы

  • Нет связанных вопросов^_^