`

andEngine > 学习1

 
阅读更多

 

http://blog.csdn.net/cen616899547/article/category/1269391 

 

1.下载AndEngine源代码:

 

      网址:https://github.com/nicolasgramlich/AndEngine

 

2.  导入 andengine 工程 , 此时就有了一个 AndEngine 工程

 

3.  新建一个基础的android project ( 比如licai)

 

4. 将 AndEngine/bin/andengine.jar  拷贝到 新的project 的libs 中.   licai/libs/

 

5. ,右键选择新的project(licai)  -> Build Path->Configure build path

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

 

6. 拷贝 下面的图 bg.png   ,  smell.png 到 licai 工程的 assets 下.

 

7. licai工程的 MAIN.JAVA 修改成如下代码

 

package licai.mft;

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 MainActivity 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(), "bg.png"),    
                    getVertexBufferObjectManager());   
          
          
        BitmapTextureAtlas mTexture = new BitmapTextureAtlas(getTextureManager(),64,32,TextureOptions.BILINEAR_PREMULTIPLYALPHA);  
        mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mTexture, this, "smell.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;  
        }  
          
          
          
          
    }  

}

 

 

 

 

 

  • 大小: 3.1 KB
  • 大小: 211.8 KB
分享到:
评论

相关推荐

    AndEngine学习

    ### AndEngine学习:环境配置与扩展包导入详解 AndEngine是一款专为Android平台设计的开源游戏开发框架,因其高效、灵活以及丰富的功能而备受开发者青睐。本文将详细解析AndEngine的环境配置步骤以及如何导入其扩展...

    AndEngine游戏开发示例

    通过学习AndEngine游戏开发示例,开发者可以掌握2D游戏开发的基本技巧,包括场景构建、精灵动画、物理引擎应用以及用户交互处理。无论你是初学者还是有经验的开发者,都能从中获益,快速构建出自己的Android游戏。

    andengine2.0开发的小游戏

    通过分析源代码和阅读教程,学习者可以掌握AndEngine的基本用法,例如设置场景、添加实体、实现物理行为、处理用户输入和更新游戏逻辑。 总的来说,这个压缩包文件提供了一个很好的机会,让对AndEngine感兴趣的...

    andengine源码及demo

    1. **AndEngine基础** AndEngine的核心在于其强大的渲染引擎,它支持精灵(Sprites)、纹理(Textures)、纹理区域(Texture Regions)以及多边形(Polygons)等基本图形元素。此外,还有动画系统、物理引擎接口、...

    AndEngine下载

    1. **OpenGL ES支持**:AndEngine基于OpenGL ES 2.0,这是Android设备上广泛支持的图形库,使得它能够创建高性能的2D游戏,充分利用硬件加速。 2. **丰富的功能库**:AndEngine提供了多种扩展模块,如精灵动画管理...

    AndEngine的官网下载的Demo

    这个Demo是AndEngine官方网站提供的示例集合,用于帮助开发者更好地理解和学习如何使用AndEngine来构建游戏。以下是对AndEngine及其Demo的详细介绍: 1. **AndEngine特性**: - **跨平台**:虽然主要针对Android,...

    andengine案例,jar包

    1. **OpenGL ES支持**:AndEngine基于OpenGL ES 2.0,这是一个为嵌入式设备设计的图形库,使得游戏能够实现高质量的图形渲染。 2. **灵活的图形系统**:AndEngine提供了一系列的图形对象,如精灵(Sprite)、纹理...

    AndEngine 中文文档

    1. **安装与设置**:首先,你需要了解如何将AndEngine库导入到你的Android Studio项目中,以及如何配置项目设置以确保引擎正常工作。这通常涉及到Gradle依赖的添加和AndroidManifest.xml的调整。 2. **基本概念**:...

    AndEngine入门篇

    1. 初始化Engine:在主Activity中创建Engine实例,设置屏幕尺寸、帧率等参数。 2. 创建Scene:定义游戏的初始界面,可以包含背景、音乐、精灵等元素。 3. 添加Entity:根据游戏需求,创建并添加不同类型的实体,如...

    捕鱼海底捞andengine源代码

    在Android游戏开发领域,AndEngine是一个非常流行的2D游戏开发框架,以其高效、轻量级和易于学习的特点深受开发者喜爱。本篇文章将深入探讨AndEngine的核心概念,以及如何通过源代码来理解并学习这款经典游戏“捕鱼...

    AndEngine 经典实例

    通过深入研究这些实例,你不仅可以学习到AndEngine的基本用法,还能掌握2D游戏开发中的许多通用技巧。此外,这些代码示例还提供了良好的注释和结构,对于初学者来说是很好的学习资料。在实际项目中,你可以参考这些...

    AndEngine游戏-DeliveryBoy-源代码

    1. **AndEngine基础**:AndEngine提供了许多基本的游戏元素,如精灵(Sprite)、纹理(Texture)、纹理区域(TextureRegion)等。通过这些元素,开发者可以构建出丰富多彩的2D游戏场景。 2. **游戏场景管理**:AndEngine...

    AndEngine最新Jar包

    1. **Scene**: 这是游戏的主要工作区,所有可见的对象都附加在这个场景上。你可以有多个场景,但任何时候只有一个场景是活动的。 2. **Sprite**: 表示2D图像的可动画对象,可以进行移动、旋转、缩放等操作。 3. **...

    AndEngine的jar包

    1. **轻量级**:AndEngine体积小,不占用过多系统资源,适合在各种Android设备上运行。 2. **高效能**:基于OpenGL ES 2.0,提供高性能的图形渲染能力。 3. **易用性**:通过简单的API接口,开发者可以快速上手,...

    andengine游戏引擎源码及实例

    总的来说,“andengine游戏引擎源码及实例”是一份全面的学习资料,无论是对AndEngine感兴趣的初学者,还是希望提升游戏开发能力的开发者,都能从中受益匪浅。通过深入研究源码和实践案例,你将能够独立开发出富有...

    最新AndEngine游戏引擎源码

    这个最新的AndEngine游戏引擎源码包,对于任何致力于Android游戏开发的人来说,都是一份极其宝贵的学习资料和开发工具。 AndEngine的核心优势在于其简洁的API设计,使得开发者能够快速地构建2D游戏,而无需深入了解...

    AndEngine引擎开发所需要的各种包

    1. **AndEngine主包** AndEngine的核心库包含了游戏开发的基础组件,如场景管理、精灵、纹理、音乐和音效等。开发者可以利用这些组件创建游戏的基本架构,包括游戏循环、时间管理、输入处理等。例如,`Scene`类是...

    AndEngine(各种版本jar包)

    1. **OpenGL ES 2.0支持**:AndEngine基于OpenGL ES 2.0图形库,提供了高效的硬件加速图形渲染能力,确保了游戏在现代Android设备上的流畅运行。 2. **精灵与动画**:AndEngine提供了精灵(Sprite)和动画(Animation)...

    AndEngine的jar包和API

    1. **实体和节点系统**:实体(Entity)和节点(Node)是AndEngine的基础构建块,可以组合成复杂的场景结构。实体可以包含多个节点,如精灵、纹理区域、文本等,而节点则负责处理这些元素的位置、旋转、缩放等属性。...

Global site tag (gtag.js) - Google Analytics