ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:1.13MB ,
资源ID:18908143      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18908143.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AndEngine学习文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

AndEngine学习文档格式.docx

1、AndEngineLiveWallpaperExtension:AndEngineTexturePackerExtension:AndEngineTMXTiledMapExtension:AndEngineMultiplayerExtension:AndEnginePhysicsBox2DExtension:AndEngineSVGTextureRegionExtension:AndEngineMODPlayerExtension:AndEngineAugmentedRealityExtension:PS:如果git不会用请自行谷歌。PS2:git hub下的是持续更新的代码,如果要考虑支持更

2、多机型,比如2.1以下,要去google code下载,点击打开链接2.下载完成后,全部导入eclipse,编译会遇到的问题a.编译AndEngine工程时,android:targetSdkVersion最好大于8,最好要有2.3以后的sdk,因为引擎中有判断当前版本的代码,如果sdk不够,编译出错!我华丽的选择4.0,毫无压力!(ps:是targetSdkVersion,而不是android:minSdkVersion,这个可以写低调点无碍!(ps2: project.properties中的版本与targetSdkVersion一致)b.编译8个扩展包,在每个工程中的project.pr

3、operties中都写的target=android-15。这个是很坑爹的,你要手动全部改成你有的sdk最高的版本,比如14(对应的是android 4.0),如果还报错,可以看一下错误的位置,估计有的话都是在导入AndEngine包的错误,也就是说扩展包有的需要AndEngine支持,右键扩展包工程-Build Path-Configure Build Path,打开面板后,选择Add jar,找到AndEngine工程下bin目录下的andengine.jar包导入即可!对于8个扩展包,都要按上述步骤配置!3.AndEngine和扩展包都配置好了,你就可以使用AndEngine引擎了,但是

4、如果你想要学习官方提供的demo,就要导入AndengineExamples了(导入之后可能会有红色的叹号,主要是关联库的问题)a.需要按照步骤2-b的操作,将AndEngine工程下bin目录下的andengine.jar和8个扩展工程下bin目录下的.jar包全部导入b.将AndEngine工程下的libs目录拷贝到AndEngineExamples下(jni需要调用的c/c+库)只要按着上述3步,基本上就没问题了!好好看示例和源码吧!AndEngine学习(二):AndEngine引擎运行原理通过对于一般游戏的逻辑原理的分析,以及对AndEngine源码的阅读,总算是对游戏的一般架构以及

5、AndEngine是如何实现这一架构的原理有了一定的了解,总结一下备忘!一般的游戏主逻辑:(在游戏的主线程中)java while (true) 用户交互监听(用户输入) 逻辑运算 绘制屏幕while (true)用户交互监听(用户输入)逻辑运算绘制屏幕如果简单的写成这样会有一个很严重的问题,就是在不同配置的机器上游戏运行的效果不一样,因为线程是在一直不停的运行的,而不同的CPU会影响到逻辑的运算,而不同的GPU又会影响其绘制效率,所以就是,在不同的配置的机器上在一定的时间内,循环运行的次数是不一样的,假设一个精灵会在一帧中走10px,不同机器上每秒跑10帧和跑100帧,那么精灵就会出现在不同

6、的机器上在相同的时间内移动的距离是不同的!这是很严重的!所以,主逻辑有了下面的改进, startTime = currentTime; 用户输入监听 endTime = currentTime; deltaTime = endTime - startTime; if (deltaTime FRAME_LENGTH_PER_SECOND) sleep(deltaTime); startTime = currentTime;用户输入监听endTime = currentTime;deltaTime = endTime - startTime;if (deltaTime FRAME_LENGTH_P

7、ER_SECOND)sleep(deltaTime);注意currentTime是获取的系统当前时间,deltaTime即用于用户输入监听,逻辑运算的时间,而FRAME_LENGTH_PER_SECOND这个值很重要,这是我们希望每帧用的时间(当然是毫秒级的,即 每秒 / 我们希望游戏在不同的机器上每秒都运行的帧数上限制,比如我们希望游戏在所有的机器上都保持在30帧以内,则FRAME_LENGTH_PER_SECOND=1000 / 30 = 33ms(毫秒),当然我们是认为绘制屏幕过程很快的,如果使用双缓冲的话,在逻辑运算部分就已经将要绘制的内容绘制到缓冲区了,而绘制屏幕的过程则相当于缓冲区

8、到屏幕的一个拷贝,过程会非常快!帅帅的分割线 =下面就要来介绍一下AndEngine是来如何实现这个主线程死循环的!在Engine类中有一个内部类UpdateThread类, private class UpdateThread extends Thread / = / Constants / Fields / Constructors public UpdateThread() super(UpdateThread.class.getSimpleName(); / Getter & Setter / Methods for/from SuperClass/Interfaces Overrid

9、e public void run() android.os.Process.setThreadPriority(Engine.this.mEngineOptions.getUpdateThreadPriority(); try while (true) Engine.this.onTickUpdate(); catch (final InterruptedException e) Debug.d(this.getClass().getSimpleName() + interrupted. Dont worry - this + e.getClass().getSimpleName() + i

10、s most likely expected!, e); this.interrupt(); / Methods / Inner and Anonymous Classes private class UpdateThread extends Thread/ =/ Constants/ Fields/ Constructorspublic UpdateThread()super(UpdateThread.class.getSimpleName();/ Getter & Setter/ Methods for/from SuperClass/InterfacesOverridepublic vo

11、id run()android.os.Process.setThreadPriority(Engine.this.mEngineOptions.getUpdateThreadPriority();tryEngine.this.onTickUpdate();catch (final InterruptedException e)Debug.d(this.getClass().getSimpleName() + + e.getClass().getSimpleName() + this.interrupt();/ Methods/ Inner and Anonymous Classes看到了吧,在

12、其run()方法中,就是这个游戏的主循环,而这个主线程是在Engine的构造方法中启动的(可以看代码)问题来了,这只是实现的我们一般游戏的引擎,是有不同配置机器运行效率不同的问题的,当然我们可以靠TimerHandler来大概控制,可是却不是可靠的,那么我们想要的控制帧数的引擎该怎么做呢?其实AndEngine已经为我们实现了,即 LimitedFPSEngine类,从名字上看,这个类实现的功能就是和我们想要的控制帧数是一样的!下面是LimitedFPSEngine类中的onUpdate方法,源码已经很认真的解释了控制帧数的原理,Override public void onUpdate(fi

13、nal long pNanosecondsElapsed) throws InterruptedException final long preferredFrameLengthNanoseconds = this.mPreferredFrameLengthNanoseconds; final long deltaFrameLengthNanoseconds = preferredFrameLengthNanoseconds - pNanosecondsElapsed; if (deltaFrameLengthNanoseconds = 0) super.onUpdate(pNanosecon

14、dsElapsed); else final int sleepTimeMilliseconds = (int) (deltaFrameLengthNanoseconds / NANOSECONDS_PER_MILLISECOND); Thread.sleep(sleepTimeMilliseconds); super.onUpdate(pNanosecondsElapsed + deltaFrameLengthNanoseconds);public void onUpdate(final long pNanosecondsElapsed) throws InterruptedExceptio

15、nfinal long preferredFrameLengthNanoseconds = this.mPreferredFrameLengthNanoseconds;final long deltaFrameLengthNanoseconds = preferredFrameLengthNanoseconds - pNanosecondsElapsed;if (deltaFrameLengthNanoseconds = 0)super.onUpdate(pNanosecondsElapsed);elsefinal int sleepTimeMilliseconds = (int) (delt

16、aFrameLengthNanoseconds / NANOSECONDS_PER_MILLISECOND);Thread.sleep(sleepTimeMilliseconds);super.onUpdate(pNanosecondsElapsed + deltaFrameLengthNanoseconds);LimitedFPSEngine是Engine的子类,在其onUpdate方法中,也会调用父类(Engine)的onUpdate方法,而Engine的onupdate方法就做了我们每帧需要的一些运算(Scene的更新是递归的噢)这篇内容主要记录一下AndEngine的运行原理,下一篇将会记录一下AndEngine与我们的Android游戏的一些粘合点不是大神,难免有疏漏,各位如果认为我在哪总结有不妥之处,敬请拍砖!谢谢!AndEngine学习(三):AndEngine与Android的粘合点AndEngine为我们提供了在Android中使用其引擎方便的接口!众所周知,几乎每一个Android的应用和游戏都会有Activity(当然只有某些Service或者Reciver之类的除外。),而作为游戏,Activity更是必不可少的,原因很简单,游戏需要与用户交互,游戏需要呈现出画面,这些,都需要Activity的支持。再看

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1