ANDENGINE Old [初始屏幕错误]

问题描述:

我是Andengine的初学者,所以我带GLSE1练习我的第一个游戏代码。我试图显示一个启动画面,但它总是在“纹理”(不能实例化类型纹理)和“createFromAsset”中显示错误。ANDENGINE Old [初始屏幕错误]

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

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 

帮我做的第一步

+1

你说错了什么? – pskink

+0

在“纹理”(无法实例化纹理类型)中,行:this.mTexture = new Texture(512,512,TextureOptions.BILINEAR_PREMULTIPLYALPHA); –

也许您正在使用尺寸大于纹理中提及的宽度和高度的图像。检查图像的宽度和高度,尝试增加纹理的宽度和高度,并检查是否正常工作 OR 试试你的纹理改变BitmapTextureAtlas和尝试这个

私人BitmapTextureAtlas mtexture; private TextureRegion mregion;

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

首先,改变GLES2 - 中心定位,如果你还处于起步阶段。

然后:

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

然后:

最终的Sprite飞溅=新的Sprite(的centerX,centerY,this.mSplashTextureRegion,mEngine.getVertexBufferObjectManager()); scene.getLastChild()。attachChild(splash);

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