在Andengine的API中,Andengine负责捕获触摸事件,如果我们需要监听触摸事件,则需要向Scene注册。
mScene.registerTouchArea(touchArea);
通过查阅IToucheArea的源码发现
@Override
public boolean contains(float pX, float pY) {
return true;
}
@Override
public float[] convertSceneToLocalCoordinates(float pX, float pY) {
return new float[] { pX, pY };
}
@Override
public float[] convertLocalToSceneCoordinates(float pX, float pY) {
return new float[] { pX, pY };
}
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
return false;
}
一个区域里有自己的判断当前触摸的坐标是不是属于自己感兴趣的,如果不是则直接抛弃。
因为Shape类是实现了ITouchArea接口的,所以我们的Sprite等精灵类都可以直接被注册。
在Scene的源码里可以找到相关的代码,于是我们了解了,在Andengine中,监听触摸和ENtity并不是同一个概念,两者是独立的,于是这也解释了,为什么在Scene中detach了一个Entity,在其注册过监听的地方触摸还是会触发和以前一样的效果。
再来关注事件的传递,在源码中我们发现由于事件需要Area本身来判断其是否属于Area,所以在注册的时候并不存在类似Android中的父子关系,传递是根据注册的顺序一个一个进行的,但是相同的是如果一个Area宣布自己处理了时间(返回了true),传递序列就会直接终止,这里和Android中的事件是一样的。
但是这样固定的顺序会有一些问题,其实设计者已经考虑到了这个问题,于是我们在源码中发现了一个标志量:mOnAreaTouchTraversalBackToFront。 这个标志会决定当前事件的传递是正序还是逆序,这样就在一定程度上解决了我们的问题。
分享到:
相关推荐
官方版本,亲测可用
AndEngine游戏 DeliveryBoy 源代码,可以用来做AndEngine游戏实例教程进行参考
Andengine-Android-Studio 用于游戏引擎、流行标题和引擎的 Android Studio 模块。
AndEngine 2013-3-12 最新Jar包,直接拉进项目libs即可,可查看源代码
Android-游戏引擎AndEngine范例-源码
AndEngine 2013-2月 最新Example,直接导入Eclipse即可,API15, 环境 Android 4.0.3
#AndEngine准备使用骨架 ##来自Charles Smartt Jr.和Jordan Dickow ##摘要以下是andEngine和andEnginePhysicsBox2DExtension的可编译就绪源代码集,仅在Android Studio中使用。 JNI本机扩展已被编译并包含在内,而...
AndEngine游戏开发指南-初级篇.pdf android基于AndEngine游戏引擎开发
AndEngine_分析之二-----BaseGameActivity. 中文
AndEngine_分析之三-----AsyncTask_BaseActivity备忘
AndEngine基于libGDX框架开发,使用OpenGL ES进行图形绘制,底层使用C++编写,通过JNI调用来实现,因此比较高效,功能强大。同时集成了Box2D物理引擎,因此能实现一些较为复杂的物理效果。在Rokon(另一个Android 2D游戏...
AndEngine_分析之一----载入资源 这个是英文的
最新的AndEngine-GLES2源码,协助你更快更轻松的开发安卓游戏。
AndEngine学习.docx
AndEngine,是一款Android平台的开源2D。AndEngine ,游戏引擎,著名的休闲游戏 Flappy Bird就是使用的该引擎开发。
AndEngine下载 AndEngine
AndEngine ,一款android游戏开发的开源引擎,开发android游戏时很有用!文档详细介绍了该引擎的各种功能
本源码为使用android开源游戏引擎andengine开发的捕鱼达人游戏,引擎中使用的是andengine游戏引擎的老版本。可供大家参考研究。
android andengine 代码 AnimatedSprite 实例 大家一起学习android andengine 游戏开发吧
AndEngine是一个开源项目。这使得开发者在遇到问题时可以直接从源码上找到答案,也能按照自己的需要对AndEngine进行修改和扩展。AndEngine的源码在github上托管[2]。 高效 AndEngine主要使用Java语言开发,但在...