AndEngine 简单介绍

    技术2022-05-20  64

    package com.andengine.test; 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.scene.Scene.IOnSceneTouchListener; import org.anddev.andengine.entity.scene.background.ColorBackground; import org.anddev.andengine.entity.sprite.Sprite; import org.anddev.andengine.input.touch.TouchEvent; 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; /**  * 图片添加删除  * @author Administrator  * 实现图片在窗体中添加、删除  */ public class ImageManager extends BaseGameActivity implements IOnSceneTouchListener{     /**      * 屏幕尺寸      */     private float CameraWidth = 1500;     private float CameraHeight = 480;     /**      * 屏幕对象      */     private Camera camera;     /**      * 图象纹理对象      */     private Texture texture;     /**      * 图象对象      */     private TextureRegion tankTextureRegion;     /**      * 精灵对象      */     private Sprite face;     /**      * 精灵状态      */     private int spriteType = 1;         /**      * 创建窗体第一加载方法      */     public Engine onLoadEngine() {         /**          * 创建窗体信息          * pX 当前窗体初始X坐标          * pY 当前窗体初始Y坐标          * pWidth 当前窗体宽度, 和高度比对后自适应屏幕          * pHeight 当前窗体高度 , 和宽度比对后自适应屏幕          */         camera = new Camera(0, 0, CameraWidth, CameraHeight);         /**          * 返回创建窗体对象          * EngineOptions 窗体对象详细信息类          * pFullScreen 是否全屏          * pScreenOrientation 显示模式(横屏/竖屏)          * pResolutionPolicy 比对宽高          * pCamera 创建窗体信息对象          */         return new Engine(new EngineOptions(true , ScreenOrientation.LANDSCAPE , new RatioResolutionPolicy(CameraWidth, CameraHeight), this.camera));     }         /**      * 设置资源信息第二加载方法      */     public void onLoadResources() {         /**          * 实例化图片纹理          * pWidth 图片宽度 (不能小于真正图片宽度)          * pHeight 图片高度(不能小于真正图片高度)          * pTextureOptions 不太清楚 , 大概是图片显示效果吧。。          */         texture = new Texture(128 , 256 , TextureOptions.BILINEAR_PREMULTIPLYALPHA);         /**          * 指定数据源路径到Asset下的gfx文件夹          */         TextureRegionFactory.setAssetBasePath("gfx/");         /**          * 创建图片对象          * 图象纹理          * 上下文          * 图片名称          * X坐标          * Y坐标          */         tankTextureRegion = TextureRegionFactory.createFromAsset(texture, this, "tank.png", 0, 0);         /**          * 设置纹理管理器加载纹理          */         this.mEngine.getTextureManager().loadTexture(texture);     }     /**      * 设置当前窗体第三加载方法      */     public Scene onLoadScene() {         /**          * 创建窗体现场对象          * pLayerCount 层数量          */         Scene scene = new Scene(1);         /**          * 设置背景颜色          */         scene.setBackground(new ColorBackground(0,0,255));         /**          * 设置触摸窗体屏幕事件对象          */         scene.setOnSceneTouchListener(this);         /**          * 返回布置完的现场          */         return scene;     }     /**      * 添加图片(自定义方法)      */     public void addImage(){         /**          * 获得现场对象          */         Scene scene = this.mEngine.getScene();         /**          * 设置图片X坐标          */         float tankX = (CameraWidth - tankTextureRegion.getWidth())/2;         /**          * 设置图片Y坐标          */         float tankY = (CameraHeight - tankTextureRegion.getHeight())/2;         /**          * 创建精灵并将图片存入          */         face = new Sprite(tankX , tankY , tankTextureRegion){             public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {                 this.setPosition(pSceneTouchEvent.getX() - this.getWidth() / 2, pSceneTouchEvent.getY() - this.getHeight() / 2);                 return true;             }         };                 /**          * 将精灵画入最上层布局中          * 布局方式 先画最上层 也就是从0、1、2这种方式画 ,最上层容易被下层覆盖 , 要注意          */         scene.getTopLayer().addEntity(face);         /**          * 注册屏幕按下事件          */         scene.registerTouchArea(face);         scene.setTouchAreaBindingEnabled(true);     }         /**      * 删除图片(自定义方法)      * @param pScene      */     public void removeImage(final Scene pScene){         this.runOnUpdateThread(new Runnable(){             public void run() {                 pScene.getTopLayer().removeEntity(face);             }         });     }         /**      * 加载机器信息(第四加载方法)      */     public void onLoadComplete() {         addImage();     }     /**      * 实现IOnSceneTouchListener接口后可用方法 , 点击当前窗体监听方法      */     public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { //        System.out.println("spriteType:" + spriteType); //        if(spriteType == 1){ //            spriteType = 0; //            removeImage(pScene); //        }else{ //            spriteType = 1; //            addImage(); //        }         return false;     } }


    最新回复(0)