您的位置:首页 > 其它

[AndEngine学习教程] 第2节 使用AndEngine.jar创建工程

2013-01-25 16:01 239 查看
1.回顾

在上一节已经成功的导入AndEngine源代码项目,我们就利用它来实现我们的工程.lib文件在bin目录下:



2.建立工程

在eclipse下file->new->project...->Android Application Project



点击next

设置工程明等参数,例如:MoveBall,为了兼容工程版本,将SDk版本修改为2.1,如图所示:



接着下一步,可以随便选择你要的图标



然后next ....finish就完成了初始工程的创建

3.修改原始工程

鼠标放在MoveBall项目上,右键选择Build Path->Configure build path

然后选择Projects,点击右边的Add.选择上AndEngine



点击OK就可以将AndEngine项目添加到工程了

打开MoveBall,java,将MoveBall extends Activity修改为MoveBall extends BaseGameActivity.

接着写代码:

[java] view
plaincopy

package season.lxx.moveball;

import org.andengine.engine.camera.Camera;

import org.andengine.engine.options.EngineOptions;

import org.andengine.engine.options.ScreenOrientation;

import org.andengine.engine.options.resolutionpolicy.IResolutionPolicy;

import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;

import org.andengine.entity.scene.Scene;

import org.andengine.entity.scene.background.RepeatingSpriteBackground;

import org.andengine.entity.sprite.AnimatedSprite;

import org.andengine.entity.sprite.TiledSprite;

import org.andengine.entity.sprite.vbo.ITiledSpriteVertexBufferObject;

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.atlas.bitmap.source.AssetBitmapTextureAtlasSource;

import org.andengine.opengl.texture.region.ITiledTextureRegion;

import org.andengine.opengl.texture.region.TiledTextureRegion;

import org.andengine.opengl.vbo.VertexBufferObjectManager;

import org.andengine.ui.activity.BaseGameActivity;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.support.v4.app.NavUtils;

public class MoveBall extends BaseGameActivity {

private static final int CAMERA_WIDTH = 800;

private static final int CAMERA_HEIGHT = 480;

private final static float BALL_VELOCITY = 100f;//球的移动速度

private Camera mCamera;

private Scene mScene;

private RepeatingSpriteBackground background;

private TiledTextureRegion mFaceTextureRegion;

@Override

public EngineOptions onCreateEngineOptions() {

// TODO Auto-generated method stub

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

EngineOptions mEngineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);

return mEngineOptions;

}

@Override

public void onCreateResources(

OnCreateResourcesCallback pOnCreateResourcesCallback)

throws Exception {

// TODO Auto-generated method stub

this.background = new RepeatingSpriteBackground(CAMERA_WIDTH, CAMERA_HEIGHT,

getTextureManager(), AssetBitmapTextureAtlasSource.create(

this.getAssets(), "background.png"),

getVertexBufferObjectManager());

BitmapTextureAtlas mTexture = new BitmapTextureAtlas(getTextureManager(),64,32,TextureOptions.BILINEAR_PREMULTIPLYALPHA);

mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mTexture, this, "face_circle_tiled.png", 0, 0,2,1);

/**

* 参数说明:

* mTexure是在内存中放置贴图资源用的,64,32是图片要求的宽和高,必须是2的n次方大小.如:2,4,8,16,32,64,128,512,1024....

* 并且要比原图的宽高要大

*

* mFaceTextureRegion相当于从mTexure中扣图,因为mTexure是由很多图集组成的,要从中截取一片出来

* 0,0代表截图的top,right坐标(起点坐标),2和1分别代表贴图中一张存在2列1行

*

*/

mTexture.load();

pOnCreateResourcesCallback.onCreateResourcesFinished();

}

@Override

public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)

throws Exception {

// TODO Auto-generated method stub

mScene = new Scene();

mScene.setBackground(background);

final float centerX = (CAMERA_WIDTH - mFaceTextureRegion.getWidth()) / 2;//计算贴图的中心坐标

final float centerY = (CAMERA_HEIGHT - mFaceTextureRegion.getHeight()) / 2;

final Ball mBall = new Ball(centerX, centerY,32, 32,this.mFaceTextureRegion,getVertexBufferObjectManager());

mScene.attachChild(mBall);

pOnCreateSceneCallback.onCreateSceneFinished(mScene);

}

@Override

public void onPopulateScene(Scene pScene,

OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {

// TODO Auto-generated method stub

pOnPopulateSceneCallback.onPopulateSceneFinished();

}

private static class Ball extends AnimatedSprite{

float mVelocityX = BALL_VELOCITY;//球的x方向速度

float mVelocityY = BALL_VELOCITY ;//球的y方向速度

public Ball(float pX, float pY, float pWidth, float pHeight,

ITiledTextureRegion pTiledTextureRegion,

VertexBufferObjectManager pVertexBufferObjectManager) {

super(pX, pY, pWidth, pHeight, pTiledTextureRegion, pVertexBufferObjectManager);

// TODO Auto-generated constructor stub

mX = 100;

mY = 100;

}

@Override

protected void onManagedUpdate(float pSecondsElapsed) {

// TODO Auto-generated method stub

if(this.mX < 0) {

setVelocityX(BALL_VELOCITY);

} else if( this.mX + this.getWidth() > CAMERA_WIDTH){

setVelocityX(-BALL_VELOCITY);

}

if(this.mY < 0 ) {

setVelocityY(BALL_VELOCITY);

} else if(this.mY + this.getHeight() > CAMERA_HEIGHT){

setVelocityY(-BALL_VELOCITY);

}

mX += mVelocityX * pSecondsElapsed;

mY += mVelocityY * pSecondsElapsed;

this.setPosition(mX, mY);

Log.d("Season",pSecondsElapsed + "");

super.onManagedUpdate(pSecondsElapsed);

}

void setVelocityX(float vx){

mVelocityX = vx;

}

void setVelocityY(float vy){

mVelocityY = vy;

}

}

}

很重要的一步,为了让游戏顺利运行,一定要将AndEngine/bin/andengine.jar拷贝到MoveBall/libs下

本例子用到两张图片:





把这两张图片拷贝到MoveBall/assets目录下

然后运行就可以看到一个运动的小脸蛋了.呵呵



本例子源代码:http://download.csdn.net/detail/cen616899547/4701606
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: