上午搭建了下AndEngine的环境,运行起来了demo,看起来感觉很不错。这里写了个demo,凡事都要重基础开始学习,在学习android的绘图过程中也是,从如何绘制直线,矩形等到复杂的图像。这里做下笔记哈。
1、创建完android项目,引入AndEngine的项目类库,
2、创建Activity并继承SimpleBaseGameActivity,重载onCreateEngineOptions() ,onCreateResources(),onCreateScene()。
activity的执行顺序是onCreateEngineOptions() -> onCreateResources()->onCreateScene()。
以下是运行的log:
3、完整代码:
- package com.xzw.drawline;
-
- import java.util.Random;
-
- 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.primitive.Line;
- import org.andengine.entity.scene.Scene;
- import org.andengine.entity.scene.background.Background;
- import org.andengine.entity.util.FPSLogger;
- import org.andengine.opengl.vbo.VertexBufferObjectManager;
- import org.andengine.ui.activity.SimpleBaseGameActivity;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.util.DisplayMetrics;
- import android.util.Log;
- import android.view.Menu;
-
- public class MainActivity extends SimpleBaseGameActivity {
-
- private static final String TAG = "MainActivity";
-
-
- private static final long RANDOM_SEED = 1234567890;
- private static final int LINE_COUNT = 10;
-
-
-
-
-
- private static int camera_width = 720;
- private static int camera_height = 480;
-
-
-
-
-
-
- @Override
- public EngineOptions onCreateEngineOptions() {
- Log.i(TAG, "--onCreateEngineOptions()--");
-
- setSceenDisplay();
-
-
-
-
-
- final Camera camera = new Camera(0, 0, camera_width, camera_height);
-
- return new EngineOptions(true,
- ScreenOrientation.LANDSCAPE_FIXED,
- new RatioResolutionPolicy(camera_width, camera_height),
- camera);
- }
-
- @Override
- protected void onCreateResources() {
- Log.i(TAG, "--onCreateResources()--");
- }
-
-
-
- @Override
- protected Scene onCreateScene() {
- Log.i(TAG, "--onCreateScene()--");
- this.mEngine.registerUpdateHandler(new FPSLogger());
-
-
-
-
-
-
- final Scene scene = new Scene();
-
-
- scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
-
- final Random random = new Random(RANDOM_SEED);
-
-
- final VertexBufferObjectManager vertexBufferObjectManager = this.getVertexBufferObjectManager();
-
- for(int i = 0;i<LINE_COUNT;i++){
-
- final float x1 = random.nextFloat()*camera_width;
- final float x2 = random.nextFloat()*camera_width;
- final float y1 = random.nextFloat()*camera_height;
- final float y2 = random.nextFloat()*camera_height;
-
-
- final float lineWidth = random.nextFloat() * 5;
-
-
- final Line line = new Line(x1,y1,x2,y2,lineWidth,vertexBufferObjectManager);
-
-
- line.setColor(random.nextFloat(),random.nextFloat(),random.nextFloat());
-
- scene.attachChild(line);
-
- }
-
- return scene;
- }
-
-
-
-
-
- private void setSceenDisplay(){
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- camera_width = dm.widthPixels;
- camera_height = dm.heightPixels;
- }
-
-
- }
真机运行效果:
如果你使用虚拟机运行的话会报:java.lang.IllegalArgumentException: No EGLConfig found!的错误。
所以只能使用真机。
以上就是创建一个简单的AndEngine的引擎的实现过程。初学请大牛们多多指教。
本文转自xuzw13 51CTO博客,原文链接:http://blog.51cto.com/xuzhiwei/1049109,如需转载请自行联系原作者