`

(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的动画精灵类,可以直接传入多张小图片的名称,直接生成动画精灵

    AndEngine进阶之自定义Tiled精灵

    AndEngine游戏引擎进阶之自定义Tiled精灵,AndEngine游戏引擎是一个开源的Android 2D游戏引擎。

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

    我根据andengine文档和网上的例子,自己加工在androidstadio上运行代码中有我照着文档写的例子,根据自己理解做了一点注释,希望对新人有帮助

    AndEngine 精灵场景坐标转换

    在制作动画精灵的时候,为了方便计算,常常需要把场景中的坐标转换为精灵的内部坐标,或者需要把精灵的内部坐标转换为场景坐标.如果精灵没有进行过旋转操作,他们之间只差 一个offse而已

    andengine 中文

    andengine 中文文档

    AndEngine下载

    AndEngine下载 AndEngine

    android andengine 代码 AnimatedSprite 实例

    android andengine 代码 AnimatedSprite 实例 大家一起学习android andengine 游戏开发吧

    andengine 类代码组织图

     AndEngine对于物理引擎Box2D[3]的封装是让人惊讶的。 它使用JNI封装了Box2D的C++端,使得其运行效率比其他同级的物理引擎如Box2D快不少。如果你的游戏准备使用物理引擎,请优先考虑AndEngine。 扩展丰富  ...

    AndEngine 类 组织图

     AndEngine对于物理引擎Box2D[3]的封装是让人惊讶的。 它使用JNI封装了Box2D的C++端,使得其运行效率比其他同级的物理引擎如Box2D快不少。如果你的游戏准备使用物理引擎,请优先考虑AndEngine。 扩展丰富  ...

    androidandengine3D引擎源码

    android andengine3D引擎源码: 项目站点:http://www.andengine.org 项目地址:http://code.google.com/p/andengine 示例地址:http://code.google.com/p/andengineexamples AndEngine是一款以OpenGLES方式进行...

    andengine2.0开发的小游戏

    利用andengine2.0开发的一款小游戏,有兴趣的朋友可以研究下。

    AndEngine最新jar包

    AndEngine最新jar包 AndEngine最新jar包 AndEngine最新jar包

    Andengine笔记

    AndEngine基于libGDX框架开发,使用OpenGL ES进行图形绘制,底层使用C++编写,通过JNI调用来实现,因此比较高效,功能强大。同时集成了Box2D物理引擎,因此能实现一些较为复杂的物理效果。在Rokon(另一个Android 2D游戏...

    andengine源码及demo

    andengine源码,源码扩展及demo,供14个project

    andEngine粒子系统使用之px文件

    andEngine粒子系统使用之采用px文件的方式构建自己的粒子系统,源代码案例

    AndEngine游戏开发示例

    AndEngine游戏开发示例 详情请链接至:http://blog.csdn.net/lan410812571/article/details/9716743

    andEngine之SVG文件的使用

    SVG文件在andEngine中的使用,源码详细,一看便明白使用方法。

    Andengine全套git库

    Andengine全套的git库,包括 AndEngineAugmentedRealityExtension AndEngineLiveWallpaperExtension AndEngineMODPlayerExtension AndEngineMultiplayerExtension AndEngineMultiTouchExtension (Merged into the '...

    AndEngine中文文档资料混总

    一些我搜集的AndEngine游戏引擎的资料混总,都是些中文的,对入门学习有帮助

    宝石迷阵3源码 andengine

    使用andengine游戏引擎开发的宝石迷阵3!该源码是完整的项目,编码gbk.里面注释比较多,适合初学andengine!!

Global site tag (gtag.js) - Google Analytics