ANDENGINE 旧 [启动画面错误]

ANDENGINE Old [Splash Screen Error]

我是Andengine的初学者,所以我带着GLSE1来练习我的第一个游戏代码。我试图显示启动画面,但它总是在 "Texture"(无法实例化类型纹理)、"createFromAsset".

中显示错误

我的启动画面完整代码如下:

package com.example.first.aq2;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.opengl.texture.Texture;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
import org.anddev.andengine.ui.activity.BaseGameActivity;

public class AQ2 extends BaseGameActivity {

    // ===========================================================
    // Constants
    // ===========================================================
    private static final int CAMERA_WIDTH = 480;
    private static final int CAMERA_HEIGHT = 320;
    // ===========================================================
    // Fields
    // ===========================================================
    private Camera mCamera;
    private Texture mTexture;
    private TextureRegion mSplashTextureRegion;
    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================
    @Override
    public Engine onLoadEngine() {
    this.mCamera = new Camera(0, 0, CAMERA_WIDTH,CAMERA_HEIGHT);
    return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH,  CAMERA_HEIGHT), this.mCamera));
    }
    @Override
    public void onLoadResources() {
    this.mTexture = new Texture(512, 512,TextureOptions.BILINEAR_PREMULTIPLYALPHA);
    this.mSplashTextureRegion = TextureRegionFactory.createFromAsset(this.mTexture,this, "gfx/Splashscreen.png", 0, 0);
    this.mEngine.getTextureManager().loadTexture(this.mTexture);
    }
    @Override
    public Scene onLoadScene() {
    this.mEngine.registerUpdateHandler(new FPSLogger());
    final Scene scene = new Scene(1);
    /* Center the splash on the camera. */
    final int centerX = (CAMERA_WIDTH - this.mSplashTextureRegion.getWidth()) / 2;
    final int centerY = (CAMERA_HEIGHT - this.mSplashTextureRegion.getHeight()) / 2;
    /* Create the sprite and add it to the scene. */
    final Sprite splash = new Sprite(centerX, centerY, this.mSplashTextureRegion);
    scene.getLastChild().attachChild(splash);
    return scene;
    }
    @Override
    public void onLoadComplete() {
    }
    }
    enter code here

帮我做第一步

首先,如果您还处于起步阶段,请切换到 GLES2 - Anchor Center。

然后:

mTexture = new BitmapTextureAtlas(getTextureManager(), 256, 256, TextureOptions.DEFAULT);
mSplashTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(yourTexture, this, "gfx/Splashscreen.png"", 0, 0);
mTexture.load(); 

然后:

final Sprite splash = new Sprite(centerX, centerY, this.mSplashTextureRegion, mEngine.getVertexBufferObjectManager()); scene.getLastChild().attachChild(飞溅);

  • 为什么将它附加到最后一个子实体?

可能是您使用的图像尺寸大于纹理中提到的宽度和高度。检查图像的宽度和高度并尝试增加纹理的宽度和高度并检查它是否有效 要么 尝试将纹理更改为 BitmapTextureAtlas 并尝试这个

private BitmapTextureAtlas mtexture; 私有 TextureRegion mregion;

mtexture = new BitmapTextureAtlas(1024, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);     
mregion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mtexture, getApplicationContext(), "Splashscreen.png",0,0);
getEngine().getTextureManager().loadTexture(mtexture);