当前位置:编程学习 > JAVA >>

AndEngine的第一个程序HelloWorld

AndEngine的环境搭建好后,只运行Samples是远远不够的,要想真正了解如何使用这个框架,还是需要自己动手写写代码。

先从简单的HelloWorld开始。

目标:使用一张图片作为背景,并在屏幕中央显示“Hello World !”文字。

1.新建一个Android工程,设置工程属性,让工程引用AndEngine工程。

2.让工程的主Activity继承SimpleBaseGameActivity类。并实现基类中的几个方法:

[java] 
public EngineOptions onCreateEngineOptions(); 
public void onCreateResources(); 
public Scene onCreateScene(); 
这个类的全部代码如下:
[java] 
package com.example.testandeng1; 
 
import org.andengine.engine.camera.Camera; 
import org.andengine.engine.options.EngineOptions; 
import org.andengine.engine.options.ScreenOrientation; 
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy; 
import org.andengine.entity.Entity; 
import org.andengine.entity.scene.Scene; 
import org.andengine.entity.sprite.Sprite; 
import org.andengine.entity.text.Text; 
import org.andengine.opengl.font.Font; 
import org.andengine.opengl.font.FontFactory; 
import org.andengine.opengl.texture.TextureOptions; 
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas; 
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory; 
import org.andengine.opengl.texture.region.ITextureRegion; 
import org.andengine.ui.activity.SimpleBaseGameActivity; 
 
import android.graphics.Color; 
import android.opengl.GLES20; 
 
public class MainActivity extends SimpleBaseGameActivity { 
    public static final int CAMERA_WIDTH = 800; 
    public static final int CAMERA_HEIGHT = 480; 
 
    private static final int LAYER_COUNT = 2; 
 
    private static final int LAYER_BACKGROUND = 0; 
    private static final int LAYER_TEXT = LAYER_BACKGROUND + 1; 
 
    private Scene mScene; 
 
    private Font mFont; 
    private BitmapTextureAtlas mBackgroundTexture; 
    private ITextureRegion mBackgroundTextureRegion; 
     
    private Text mHelloText; 
 
    public EngineOptions onCreateEngineOptions() { 
        Camera mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
        final EngineOptions engineOptions = new EngineOptions(true, 
                ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy( 
                        CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); 
        return engineOptions; 
    } 
 
    @Override 
    public void onCreateResources(){ 
        /* Load the font we are going to use. */ 
        FontFactory.setAssetBasePath("font/"); 
        this.mFont = FontFactory.createFromAsset(this.getFontManager(), 
                this.getTextureManager(), 512, 512, TextureOptions.BILINEAR, 
                this.getAssets(), "GOTHIC.TTF", 32, true, Color.WHITE); 
        this.mFont.load(); 
 
        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("img/"); 
        /* Load all the textures this game needs. */ 
        this.mBackgroundTexture = new BitmapTextureAtlas( 
                this.getTextureManager(), 800, 480); 
        this.mBackgroundTextureRegion = BitmapTextureAtlasTextureRegionFactory 
                .createFromAsset(this.mBackgroundTexture, this, "android.png", 
                        0, 0); 
        this.mBackgroundTexture.load(); 
    } 
 
    @Override 
    public Scene onCreateScene(){ 
        this.mScene = new Scene(); 
        for (int i = 0; i < LAYER_COUNT; i++) { 
            this.mScene.attachChild(new Entity()); 
        } 
 
        /* No background color needed as we have a fullscreen background sprite. */ 
        this.mScene.setBackgroundEnabled(false); 
        this.mScene.getChildByIndex(LAYER_BACKGROUND).attachChild( 
                new Sprite(0, 0, this.mBackgroundTextureRegion, this 
                        .getVertexBufferObjectManager())); 
         
        this.mHelloText=new Text(CAMERA_WIDTH/2 - 80, CAMERA_HEIGHT/2 - 16, this.mFont, "Hello World !", this.getVertexBufferObjectManager()); 
        this.mHelloText.setBlendFunction(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); 
        this.mHelloText.setAlpha(0.6f); 
        this.mScene.getChildByIndex(LAYER_TEXT).attachChild(this.mHelloText); 
         
        return this.mScene; 
    } 
     

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,