有个前面2篇(框架分析、JetPlayer类解析)的介绍,相信大家都迫不及待的想知道JetBoyThread这个核心类到底是如何运行的,下面我们就逐步为大家解析。
首先,分析这个类的状态图,如下所示
这张图就是我们整个程序的循环周期:PLAY——RUNNING——LOSE。根据这张图,我们逐步细化,这里我们重点介绍RUNNING,其他2种状态比较简单,这里就不再说明了。
然后,START_RUNNING 状态逐步细化,详细说明
START_RUNNING状态下的流程图,实际上就分为2部分:事件处理(updateGameState)、画图(doDraw),如下图所示:
将上面的2个活动图,逐步细化如下
- doDraw细化后的活动图,如下图所示:
解析说明:根据状态画当前的游戏实时的图像。
- updateGameState细化后的活动图,如下图所示:
解析说明:这是一个循环从消息队列中获取消息的过程,直到消息队列为空。
看到上面的TIMER_EVENT大家是不是绝对奇怪,在Android SDK文档中有明确说明,如下:
Trigger Events :Breaking a MIDI file into individual (non-linear) segments and queueing up those segments for playback in a game based on events within the game is one way JET music files are interactive. Trigger events are an additional method for interactive playback.
也就是说我们可以在segment中定义一些事件,到了特定的时间来触发。在前面已经说过,JET除了播放声音特效意外,应该还有个更加重要的重要:游戏的时钟。我们就可以在segment中定义一些特定的事件,这些时间就相当于是CPU中的时间片。当然MIDI规范中已经定义了很多事件,我们可以自定义事件的ID范围:80-83。查看程序中的代码,如下:
private final byte NEW_ASTEROID_EVENT = 80;
private final byte TIMER_EVENT = 82;
这2个事件分别用来触发产生新的asteroid、界面更新。
至此,整个核心代码的流程,我们都已经分析完了。这个游戏相对来说比较简单,就是通过按下中间键来发射子弹,飞船的位置与当前出现的陨石在一条水平线上,通过计算飞船与陨石的距离来检测是是否集中陨石。
其次,补充说明遗漏的地方
在这里需要补充说的是,在程序中使用了
private Timer mTimer = null;
private TimerTask mTimerTask = null;
这2个就是来实现一个定时器,游戏界面上的时间就是通过这个定时器:定时向主线程发送消息来更新游戏剩余时间的。具体的实现是:通过Handler来绑定到当前线程,然后通过Handler向主线程发送消息,并在Handler中处理消息,这个在Snake游戏中已经说明了,这里就不在详细说明了。
最后,总结说明
这个实例比较复杂,尤其是JET部分,我也是查阅了不少的资料,然后再具体分析阅读,最终把我自己分析的与大家分享,其中有很多地方还不是很详细。这个游戏本身没有什么可玩性,其主要作用是:演示如何通过JET这个引擎来播放声音,以及如何利用JET的事件来作为游戏的时钟;但是通过这个实例,在以后发游戏开发中却为我们提供了一个很好的实例,在以后的游戏开发、应用程序开发中都很值得借鉴。
分享到:
相关推荐
【Android源码解析——JetBoy...通过对JetBoy飞机游戏源码的分析,开发者不仅能学习到基本的游戏开发流程,还能深入了解Android图形绘制、事件处理、音频播放等核心机制,为自己的Android游戏开发之旅打下坚实基础。
这是一个基于Java编程语言的游戏源码,让我们来深入探讨一下相关的核心概念。 1. **Android游戏开发**:Android游戏开发是Android应用开发的一个分支,它利用Android平台提供的API和工具来创建各种类型的游戏,从...
《深入解析Android JetBoy飞机游戏源码》 在Android开发领域,通过研究开源项目源码是提升技术能力的重要途径之一。本篇文章将针对"Android应用源码之JetBoy飞机游戏源码"进行深入剖析,旨在帮助读者理解Android...
《JetBoy飞机游戏源码分析》 在Android开发领域,学习和理解源码是提升技能的重要途径。本篇文章将深入探讨“JetBoy飞机游戏”的源码,帮助开发者了解游戏开发的基本流程,掌握JAVA ANDROID编程的关键技术和技巧。...
【Android应用源码之JetBoy...总之,通过分析和学习JetBoy飞机游戏的源码,我们可以深入了解Android游戏开发的各个环节,包括图形渲染、事件处理、资源管理、性能优化等,这对提升个人技能和解决实际开发问题非常有益。
《Android应用源码之JetBoy飞机游戏源码》是一份专为IT计算机专业学生和开发者设计的毕业设计资源,旨在帮助他们深入理解Android应用开发,特别是游戏开发的实践过程。这个压缩包包含了完整的JetBoy飞机游戏的源代码...
Android应用源码之JetBoy飞机游戏源码.zip项目安卓应用源码下载Android应用源码之JetBoy飞机游戏源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
7. **游戏开发**:如果"JetBoy"是一个游戏,那么可能涉及到更多的游戏引擎技术,如Cocos2d-x或Unity,也可能包含物理引擎、动画序列、游戏逻辑等相关代码。 8. **软件工程实践**:良好的代码结构、注释、单元测试、...
标题“JetBoy.zip”暗示我们正在处理一个与编程相关的压缩文件,很可能是一个软件或游戏项目的源代码。描述中提到“源码参考,欢迎下载”,这表明这个文件是为那些希望学习、研究或改进代码的人准备的。由于没有提供...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
为了深入了解这款游戏,我们需要对游戏代码进行分析,理解其游戏逻辑、画面渲染和用户交互的实现方式。 总结,Android游戏开发涉及众多技术环节,从编程语言、开发工具到图形渲染和性能优化,都需要开发者有扎实的...
【标题】JetBoyView.rar_boy 指的是一个与"JetBoy View"相关的源代码压缩包,适用于Linux操作系统。 【描述】"Jet Boy View Source Code for Linux" 提供了关键信息,说明这个压缩包包含了Jet Boy View项目的源代码...
**JetBoy** 是一款横向卷轴射击游戏,随着Android 1.5版本的发布而新增。该示例展示了如何使用 `SurfaceView` 来处理复杂的图形效果,并且特别介绍了如何利用 `JetPlayer` 类来实现游戏音效。 - **技术要点**: - ...
通过分析这个应用,开发者可以学习如何处理游戏循环、动画效果以及游戏状态管理。 综上所述,Android 2.2 simple包含了各种示例和功能,旨在帮助开发者理解和利用Android 2.2的新特性,如高效的同步、手势识别、...
《Android移动开发案例详解》作为《Android平台手机软件...实用软件(如音乐播放器、天气预报、多媒体播放器、短信语音播报、手机远程监控器等),游戏软件(如JetBoy、连连看、贪吃蛇等)以及其他程序的详细开发过程。
在学习jetboy代码时,发现屏幕被旋转了,代查代码没有找到相关设置,在manifest.xml中找到了相关的代码: 找到这名代码: 代码如下:android:screenOrientation=”portrait” portrait表示横向,landscape表示纵向 ...
以上步骤详细介绍了在Windows环境下搭建Android开发环境的过程,从Java JDK的安装到Eclipse与Android SDK的整合,每个环节都是必不可少的。通过这些步骤,开发者可以建立一个完整的Android应用程序开发环境,从而...