Android游戏开发框架

上传人:新** 文档编号:504470785 上传时间:2024-01-15 格式:DOC 页数:18 大小:281.50KB
返回 下载 相关 举报
Android游戏开发框架_第1页
第1页 / 共18页
Android游戏开发框架_第2页
第2页 / 共18页
Android游戏开发框架_第3页
第3页 / 共18页
Android游戏开发框架_第4页
第4页 / 共18页
Android游戏开发框架_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Android游戏开发框架》由会员分享,可在线阅读,更多相关《Android游戏开发框架(18页珍藏版)》请在金锄头文库上搜索。

1、Android 游戏开发:游戏框架的搭建 (1 通常情况下,游戏开发的基本框架中,一般包括以下模块: 窗口管理 (Window management :该模块负责在 Android 平台上创建、运行、暂停、恢复 游戏界面等功能。输入模块 (Input :该模块和视窗管理模块是密切相关的,用来监测追踪用户的输入( 比如触摸事件、按键事件、加速计事件等 。文件输入输出 (File I/O :此模块用来读取 assets 文件下图片、音频等资源。图像模块 (Graphics :在实际游戏开发中,这个模块或许是最复杂的部分。它负责加载图片并 把它们绘制到屏幕上。音频模块 (Audio :这个模块负责在

2、不同的游戏界面加载音各类频。 网络 (networking :如果游戏提供多人游戏联网功能,此模块就是必须的。游戏框架 (Game framework :该模块把以上各种模块整合起来,提供一个易用的框架,来 轻松地实现我们的游戏。下面对每一个模块进行详细的描述。1. 窗口管理 我们可以把游戏的窗口想象成一个可以在它上面绘制内容的画布。窗口管理模块负责定制窗 口、添加各种 UI 组建、接受各类用户的输入事件。这些 UI 组件或许可以通过 GPU 等硬件加速 ( 比 如使用了 OpenGL ES 。该模设计时不是提供接口,而是和游戏框架整合在一起,之后会有相关的代码贴出。我们需要 记住的是应用程序

3、状态和窗口事件是该模块必须处理的事情:Create : 当窗口被创建时被调用的方法。Pause : 当应用程序因为默写原因暂停时调用的方法。Resume : 当应用程序恢复到前台时调用的方法。2. 输入模块 大部分操作系统中,输入事件( 比如触屏事件、按键事件 是通过当前的窗口调度(dispatched 的,窗口再进一步把这些事件派发给当前选中的组件。因此我们只需要关注组件的事 件即可。操作系统提供的 UI APIs 提供了事件分发机制,我们可以很容易地注册和监听事件,这也 是输入模块的主要职责。有两种处理事件的做法:轮询 (Polling :在这种机制下,我们仅检查输入设备的当前状态,之前和

4、之后的状态并无保 存。这种输入事件处理适合处理诸如触屏按钮事件,而不适合跟踪文本的输入,因为按键事件的顺 序并未保存。基于事件的处理 (Event-based handling :这种机制提供了记忆功能的事件处理,比较适合 处理文本输入或者其他需要按键次序的操作。在 Android 平台中,主要有三种输入事件:触屏事件、按键事件和加速计事件,前两种时间使用轮询机制和基于事件处理的机制都适合,加速计事件通常是轮询机制触屏事件有三种:Touch down :手机触屏时发生。Touch drag :手指拖动时发生,此前有 Touch dow n 事件产生。Touch up :手指抬起时发生。每种触摸

5、事件有相关的辅助信息:触屏的位置、指针索引(多点触摸时用来追踪识别不同的触点键盘事件包括两种:Key dow n :按下键盘时触发。Key up :释放键盘时触发。每种按键事件也有相关的辅助信息:Key-dow n 事件存储按键码,Key-up 事件存储按键码和实际的Unicode字符。加速计事件,系统不停的轮询加速剂的状态,并以三位坐标标识。基于以上介绍,下面定义输入模块的一些接口,用来轮询触屏事件、按键事件和加速计事件 代码如下:In put.javapackageimportcom.badlogic.androidgames.frameworkjava.util.Listpublicin

6、terfaceInputpublicstaticclassKeyEventpublicstaticfinalintKEY_DOWN=0opublicstaticfinalintKEY_UP=1opublicinttypeopublicintkeyCodeopubliccharkeyCharopublicstaticclassTouchEventpublicstaticfinalintTOUCH_DOWN=0opublicstaticfinalintTOUCHJJP=1opublicstaticfinalintTOUCH_DRAGGED=2opublicinttypeopublicintx,yo

7、# / 15publicintpointerpublicbooleanisKeyPressed(intkeyCodepublicbooleanisTouchDown(intpointerpublicintgetTouchX( intpointerpublicintgetTouchY( intpointerpublicfloatgetAccelX(publicfloatgetAccelY(publicfloatgetAccelZ(publicListgetKeyEvents(publicListgetTouchEvents(上述定义包括两个静态类:KeyEvent 和TouchEvent。Key

8、Event类和TouchEvent 类都定 义了相关事件的常量。 KeyEve nt同时定义了几个存储事件信息的变量:类型(type、按键码(keyCode 和 Uni code 字符(keyChar 。TouchEve nt 也一样,定义了位置信息(x,y、某个岀 触摸点的ID。比如第一个手指按下,ID是0,第二个手指按下ID是1 ;如果两个手指按下,手指0 释放,手指1保持,又一个手指按下时,ID为已经释放的0.下面是输入接口中的轮询方法:Input.isKeyPressed(输入参数是keyCode,返回相应的按键是否按下的布尔值;Input.isTouchDown(,Input.get

9、TouchX(和 Input.getTouchY( 返回给定指针索引是否按下、对应的横竖坐标值,注意当对应的指针索引不存在时坐标值是未定义 的。Input.getAccelX(, Input.getAccelY(, and Input.getAccelZ(返回各自的加速计的坐标值;最后两个方法用作基于事件处理机制的,他们返回KeyEvent和TouchEvent实例,用于记录上次事件触发的信息,最新的事件在列表的最后。通过这些简单的接口和类的,我们构建了我们的输入接口。下节继续分析文件处理的内容(FileI/O。3. 文件读写(File I/O读写文件在游戏开发中是一项十分重要的功能。在Jav

10、a开发中,我们主要关注InputStream和Outputstream及其实例,它们是Java中读写文件的标准方法。游戏开发中,比较多的是读取资源文件,比如配置文件、图片、音频文件等;写入文件的操作一般在保存用户进度和配置信息时 使用。下面是文件读写的接口:FileIO.java# / 15packagecom.badlogic.androidgames.frameworkimportjava.ioOExceptionimportjava.i 0nputStreamimportjava.io.OutputStreampublicinterfaceFilelOpublicInputStreamr

11、eadAsset(StringfileNamethrowsIOException0publicInputStreamreadFile(StringfileNamethrowsIOException0publicOutputStreamwriteFile(StringfileNamethrowsIOException0上述代码中,我们传递一个文件名作为参数,返回一个流,具体的执行会在接口的实现中体现。同时我们会抛岀一个IOException异常以防止读写文件岀错。当我们完成读写后,需要关闭输入输岀流。Asset文件从应用程序的 APK文件中读取,其他文件一般从内置存储器或者SDCard上读取,分

12、别对应上述代码中的三个方法。An droid游戏开发:游戏框架的搭建(24. 音频模块(Audio音频模块编程从来都是一个复杂的话题。这里不打算用到一些高级复杂的音频处理手段,主要 是播放一些背景音乐。在书写代码前,让我们了解一下音频的基础知识。采样率:定义了每秒从连续信号中提取并组成离散信号的采样个数,采样率越高音质越好,单 位用赫兹Hz )来表示,CD 一般是44.1KHZ。对于每个采样系统会分配一定存储位 ,同时提供控制播放功能。相应的接口有三个,Audio、Music和Sou nd,代码如下Audio 接口 Audio.java# / 15packagecom.badlogic.androidgames.frameworkpublicinterfaceAudiopublicMusicnewMusic(Stringfilename。publicSoundnewSound(Stringfilename。Audio 接口创建新的Music 和 Sou nd实例。一个Music实例表示个流音频文件,一个Sou nd实例表示一个保存在内存中的短的音效方法 Audio.newMusic(和Audio. newSou nd(都是以文

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号