dEngine_example1.3 画Sprite

在画Sprite之前, 最好可以先理解下一些类似 Texture相关的基础类, 这里先给几个链接,以后整理了再自己写吧。

也感谢在学习中帮助过我的blog

 

 

matim-dev

依赖

新的GLES2-AnchorCenter

http://www.matim-dev.com/tutorials.html
cping1982

因为是老的AndEngine

很多结构都改变了,回调方法什么也改变了,但是基本理解还是一样的

http://blog.csdn.net/cping1982/article/

 

 

要画一个Sprite

首先要 读取对应的 图片资源, AndEngine和libgdx是一样的, 对应的资源都是放在android的assets文件夹中

我们做的步骤:

1 设置对应的path(assets的子目录)

    个人放在assets下的 gfx/face/

onCreateResources()

2 开创一个对应的BitmapTextureAtlas, 将TextureRegion画上去。

3 将对应的TextureRegion做成一个 Sprite, 画到Scene上面去

 

读取图片资源    (对应的TextureOptions.BILINEAR以后再去)

protected void onCreateResources() {
  // TODO Auto-generated method stub
  BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/face/");//设置对应的目录
  this.mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 32, 32, TextureOptions.BILINEAR);
  this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this, "face_box.png", 0, 0);//显示对应的区域
  this.mBitmapTextureAtlas.load();
  
 }


将对应的用资源的Sprite画到Scene上去,

protected Scene onCreateScene() {
	// TODO Auto-generated method stub
	final Scene scene = new Scene();
	scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));

	/* Calculate the coordinates for the face, so its centered on the camera. */
	final float centerX = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth()) / 2;
	final float centerY = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight()) / 2;

	this.mFaceToRemove = new Sprite(centerX, centerY, this.mFaceTextureRegion, this.getVertexBufferObjectManager());
	
	this.mFaceToRemove2 = new Sprite(20, 20, this.mFaceTextureRegion, this.getVertexBufferObjectManager());
	scene.attachChild(this.mFaceToRemove);
	scene.attachChild(this.mFaceToRemove2);

	scene.setOnSceneTouchListener(this);

	return scene;
}

 

 

对应的 Listener 让本类实现 IOnSceneTouchListener 接口, 复写onSceneTouchEvent方法

@Override
public boolean onSceneTouchEvent(final Scene pScene, final TouchEvent pSceneTouchEvent) {
	if(this.mFaceToRemove == null) {
		return false;
	}

	final EngineLock engineLock = this.mEngine.getEngineLock();
	engineLock.lock();

	/* Now it is save to remove the entity! */
	pScene.detachChild(this.mFaceToRemove);
	this.mFaceToRemove.dispose();
	this.mFaceToRemove = null;

	engineLock.unlock();
	return true;
}


建立了2个Sprite, 点击屏幕,得到响应, 可以消去一个Sprite

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值