【问题标题】:Trouble loading bitmap texture atlas on screen无法在屏幕上加载位图纹理图集
【发布时间】:2016-12-10 06:16:07
【问题描述】:

我正在使用 AndEngine GLES2,我尝试在手机上加载图像,但我得到的是黑屏

下面是我的代码:

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 显示我的 onCreateResources 和 onCreateScene 中有一个 nullPointerException,我不知道出了什么问题。可能是什么问题?

【问题讨论】:

    标签: android image textures andengine


    【解决方案1】:

    一个错误是因为您从未创建场景对象,然后尝试将精灵附加到它,另一个是 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多