`

(3)、andengine之Sprite(精灵)

 
阅读更多

import java.io.IOException;
import java.io.InputStream;

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.scene.Scene;
import org.andengine.entity.scene.background.Background;
import org.andengine.entity.sprite.Sprite;
import org.andengine.entity.util.FPSLogger;
import org.andengine.opengl.texture.ITexture;
import org.andengine.opengl.texture.bitmap.BitmapTexture;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.texture.region.TextureRegionFactory;
import org.andengine.ui.activity.SimpleBaseGameActivity;
import org.andengine.util.adt.io.in.IInputStreamOpener;
import org.andengine.util.color.Color;

import android.util.DisplayMetrics;
/**
 * 绘制一个精灵
 */
public class DrawSpriteActivity extends SimpleBaseGameActivity
{
 private static int winWidth = 854;
 private static int winHeight = 480;
 //纹理
 private ITexture mTexture;
 //纹理范围
 private ITextureRegion mTextureRegin;

 @Override
 public EngineOptions onCreateEngineOptions()
 {
  setScreenDisplay();
  Camera camera = new Camera(0, 0, winWidth, winHeight);
  EngineOptions engineOptions = new EngineOptions(
    true,
    ScreenOrientation.LANDSCAPE_FIXED,
    new RatioResolutionPolicy(winWidth, winHeight), camera);
  return engineOptions;
 }
 /**
  * 7、关于Texture:
  * Texture是AndEngine所提供的纹理用类,但Texture本身(在AndEngine中)并没有提供加载图片的方法,
  * 必须通过TextureRegionFactory类
  * (更准确的说,依赖它内部封装的TextureRegion、BuildableTexture等类)与之合作才可以加载纹理
  * 。除此之外,AndEngine要求所加载纹理(图片)大小必须为2的整数次幂。
  *
  * 8、关于TextureRegion:
  * TextureRegion的父类是抽象类BaseTextureRegion,主要功能也被封装在BaseTextureRegion类当中,
  * AndEngine提供了TextureRegionFactory这个工厂类用以简化构建TextureRegion的流程
  * 。单就TextureRegion来讲,它的作用似乎就是让系统知道如何剪切一个纹理,并返回一个这样的纹理给你。
  *
  * 然而,事实上AndEngine中只有TextureRegion才更接近于通常意义上的Texture。或者说,只有TextureRegion +
  * Texture时
  * ,我们才能较为完整的使用AndEngine纹理功能。严肃的讲,AndEngine中的Texture有很多功能必须靠TextureRegion最终完成
  * ,比如AndEngine中的Sprite必须加载TextureRegion才能使用Texture,而不是直接调用Texture,
  * TMXTiledMap中读取指定瓦片返回的也是TextureRegion
  * ,而非直接的Texture(进行画面渲染时AndEngine内部会调用TextureRegion中的Texture引用
  * ,但也只允许如此调用);应该说,AndEngine中见Texture几乎必见TextureRegion,二者无法分离,缺一不可。
  */
 @Override
 protected void onCreateResources()
 {
  //Texture“纹理”、TextureRegion“纹理范围”、Sprite“精灵”。
  try
  {
   mTexture = new BitmapTexture(this.getTextureManager(), new IInputStreamOpener()
   {
    @Override
    public InputStream open() throws IOException
    {
     return getAssets().open("images/face_box.png");
    }
   });
   //加载纹理到硬件
   mTexture.load();
   //映射纹理
   mTextureRegin = TextureRegionFactory.extractFromTexture(mTexture);
  } catch (IOException e)
  {
   e.printStackTrace();
  }
 }

 @Override
 protected Scene onCreateScene()
 {
  this.mEngine.registerUpdateHandler(new FPSLogger());
  Scene scene = new Scene();
  scene.setBackground(new Background(Color.GREEN));
  
  float pX = (winWidth-mTextureRegin.getWidth())/2;
  float pY = (winHeight-mTextureRegin.getHeight())/2;
  
  //创建一个精灵
  Sprite sprite = new Sprite(pX, pY, mTextureRegin, this.getVertexBufferObjectManager());
  //添加到场景
  scene.attachChild(sprite);
  return scene;
 }
 
 /**
  * 设置屏幕大小
  */
 private void setScreenDisplay()
 {
  DisplayMetrics outMetrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
  winWidth = outMetrics.widthPixels;
  winHeight = outMetrics.heightPixels;
 }
 

}

分享到:
评论

相关推荐

    andengine封装动画精灵类

    在AndEngine这个强大的2D游戏开发引擎中,精灵(Sprite)是核心的视觉元素之一,它代表了游戏画面中的一个可移动或可交互的对象。在这个主题中,我们讨论的是一个已经封装好的AndEngine动画精灵类,它使得创建和管理...

    一个关于andengine中精灵 动作的简单例子

    本篇文章将详细讲解AndEngine中精灵(Sprite)及其动作(Animations)的应用,以一个简单的例子为基础,帮助初学者更好地理解和实践。 首先,AndEngine中的精灵是2D游戏中的基本元素,它可以是一个静态图像或动态...

    AndEngine 精灵场景坐标转换

    在AndEngine这个强大的2D游戏开发引擎中,精灵(Sprite)和场景(Scene)的坐标系统是两个独立的体系,理解和有效地在它们之间进行坐标转换是实现动态游戏元素的关键。让我们深入探讨一下这个主题。 首先,...

    Android应用源码之andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    3. **精灵(Sprite)对象**:AndEngine中的`Sprite`类代表一个可移动、可旋转、可缩放的2D图像。它可以从精灵表中创建,通过指定纹理坐标和精灵的原始尺寸。 4. **动画(Animation)**:AndEngine的`Animation`类...

    AndEngine游戏开发示例

    Scene由一组称为Entity的对象组成,如精灵(Sprite)、文本(Text)或自定义形状。精灵是最常见的Entity,通常用于显示动画角色或静止图像。在AndEngine中,你可以使用TextureRegion来指定精灵的图像区域,并通过...

    Android高级应用源码-andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    首先,我们要理解AndEngine中的精灵(Sprite)概念。精灵是2D游戏中可移动的图像对象,可以有自己的位置、旋转和缩放属性。在AndEngine中,精灵通常由TextureRegion表示,TextureRegion是一个纹理的子区域,可以是一...

    andengine 中文

    AndEngine支持多种图形元素,包括精灵(Sprite)、纹理区域(TextureRegion)、位图字体(BitmapFont)等。精灵是最基本的2D图形对象,可以用于表示游戏中的角色或其他动态对象。纹理区域是从大纹理中切割出来的一部分,常...

    andengine2.0开发的小游戏

    AndEngine通过其灵活的精灵(Sprite)系统和场景管理器(Scene Manager)支持这些功能,使得开发者能够轻松地创建动态游戏对象和复杂的交互场景。 AndEngine的核心特性包括: 1. **渲染引擎**:AndEngine的渲染...

    安卓Android源码——andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    首先,我们要了解AndEngine中的精灵(Sprite)概念。精灵是2D游戏中最常见的元素,它可以是一个静态的图像或者动态的序列帧动画。在AndEngine中,精灵由TextureRegion表示,TextureRegion是从Texture Atlas(大图片...

    应用源码之andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    2. **精灵(Sprite)**: 在AndEngine中,精灵是可移动的2D图像对象,通常用于游戏中的角色或物体。它们包含一个纹理和对应的矩形位置信息,可以进行旋转、缩放、移动等操作。 3. **纹理 atlases(精灵表)**: ...

    AndEngine下载

    在实际开发过程中,开发者可以利用AndEngine提供的基础类和工具类,如Scene(场景)、Sprite(精灵)、Camera(相机)等来构建游戏世界,通过Physics Engine(物理引擎)实现物体碰撞检测,通过Particle System...

    宝石迷阵3源码 andengine

    AndEngine的精灵(Sprite)和纹理(Texture)系统在《宝石迷阵3》中扮演重要角色。每个宝石都是一个精灵,它们的图像由纹理打包而成。通过改变精灵的位置和旋转角度,可以实现宝石的交换和消除动画。同时,纹理区域...

    AndEngine入门篇

    3. 添加Entity:根据游戏需求,创建并添加不同类型的实体,如Sprite(精灵)用于显示图片,Text(文本)用于显示文字信息。 4. 动画与交互:利用Animation类制作精灵动画,使用TouchListener监听用户触摸事件,实现...

    andengine中直接加载多张小图片合成一张大图片生成动画精灵.zip

    这个项目源码示例是关于如何使用AndEngine来创建动画精灵,通过将多张小图片合成一张大图片,然后在运行时进行切割和动画处理。这种技术通常被称为精灵表(Sprite Sheet)或纹理 atlas。 1. **精灵表(Sprite Sheet...

    AndEngine(各种版本jar包)

    2. **精灵与动画**:AndEngine提供了精灵(Sprite)和动画(Animation)管理功能,允许开发者轻松创建和控制2D角色或对象的运动和行为。 3. **物理引擎集成**:AndEngine可以与Box2D物理引擎无缝集成,用于实现复杂的...

    Android andengine中直接加载多张小图片合成一张大图片生成动画精灵源码.zip

    3. **精灵(Sprite)**:`Sprite`类是AndEngine中表示2D动画的基本元素。它包含了对`TextureRegion`的引用,以及位置、旋转和缩放等属性。 4. **动画(Animation)**:AndEngine的`Animation`类用于管理精灵的帧...

    Android andengine中直接加载多张小图片合成一张大图片生成动画精灵-IT计算机-毕业设计.zip

    这个毕业设计项目的核心是利用AndEngine的技术实现动态精灵(Sprite)的动画效果,通过将多张小图片组合成一张大图片,然后在运行时分割和动态加载,以达到流畅的动画效果。 一、AndEngine简介 AndEngine是一款开源...

Global site tag (gtag.js) - Google Analytics