- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LongSCUJ2ME第8章
第8章 手机游戏2D动画开发
本章学习要点:
● 了解GameCanvas基本概念 ●了解GameCanvas键盘控制方式
● 掌握GameCanvas屏幕显示方式 ●掌握Sprite类的开发技术
● 掌握TiledLayer类的开发技术 ●掌握LayerManager类的开发技术
手机游戏随着手机配置的提高发展非常得迅速。目前很多手机玩家已经不满足于简单的线条绘制的小游戏,他们对在手机上玩角色扮演等类型的游戏有着强烈的欲望。而这类游戏往往是通过2D动画构成的,2D动画由丰富的图片构成,有着丰富的色彩表现能力,正好能够体现在目前的彩屏手机上。
8.1 MIDP2.0 2D游戏开发
手机2D游戏的表现力不断的提高,就意味着开发难度的增加。如图8-1的一款名为“傲世奇侠传傲世奇侠传javax.microedition.lcdui.game”。如图8-2所示,这个游戏开发包开发提提供一些基本的游戏开发类,可以很方便的实现游戏背景和前景的绘制,同时提供了一些简单的人物碰撞检测函数。其中GameCanvas提供了一个游戏开发的画布,GameCanvas的功能与Canvas类的功能有点类似,都是一个屏幕类,可以在屏幕上显示各种自绘画线条或者图片,但是GameCanvas的绘画是通过双缓存技术实现的,不需要开发人员自己定义双缓存,一切显示的技术对开发人员来说是透明的,不需要游戏开发人员了解GameCanvas的屏幕显示是怎么实现的。2D游戏开发的基本思想是游戏界面由多个图形层次组成,例如游戏背景可以在一个图形层次上,而游戏人物可以在另一个图形层次上。 每一个图形层次都可以分别使用Layer类控制。而Layer类包含了制作游戏背景的TileLayer类和制作游戏精灵的Sprite类。由于一个界面的图形层次可能不仅仅局限在2个层次,可能背景本身就是由多个层次的图形构成的,所以处理多个图形层次是由LayerManager类负责的。
图8-2 游戏开发类结构图
8.2 GameCanvas类开发
GameCanvas是一个提供了游戏的基本接口的抽象类。这个类与Canvas 类相比有两个优点:
(1)它拥有屏幕缓冲,即GameCanvas本身就是使用双缓存技术实现图形或者图片的屏幕输出的,不需要开发人员编写自己的屏幕缓冲代码。
(2)它可以直接得到设备键盘的物理状态。这是与Canvas非常不一样的地方,在Canvas中,如果需要获得键盘的物理状态,需要重载Canvas的keyPressed函数,通过keyPressed函数的参数获得键盘的键盘码,所以一切操作都在keyPressed函数中实现,对程序逻辑上的编写非常不方便。
8.2.1 GameCanvas类基本开发流程
由于GameCanvas类本身就拥有屏幕缓冲,因此它的绘图方式与Canvas类不一样,并没有象Canvas类一样,通过继承一个Paint()函数来实现屏幕的显示,他是通过getGraphics函数之间获得了屏幕显示的控制权。一个GameCanvas类的开发流程如图8-3所示:
图8-3 GameCanvas开发流程图
根据图8-3的流程图,在GameCanvas类中绘画一个黑色方块的代码如下所示:
Graphics g;
g = this.getGraphics();
g.setColor(0,0,0);
g.fillRect(this.getWidth()/2-10,this.getHeight()/2-10,20,20);
flushGraphics();
首先使用getGraphics()函数获得图形接口,然后使用基本的绘制方块的fillRect()函数在缓冲屏幕上绘制黑色的方块,最后使用flushGraphics()函数把图形显示在屏幕上。
下面的例子首先编写了一个GameCanvas的继承类MyGameCanvas_1类,用来在屏幕正中间上显示一个黑色方块,具体的代码如下所示:
//源文件参见光盘:Chapter8\src\gameCanvas\MyGameCanvas_1.java
package gameCanvas;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class MyGameCanvas_1 extends GameCanvas {
private Graphics g;
protected MyGameCanvas_1() {
super(true);
g = this.getGraphics();
g.setColor(0,0,0);
//在屏幕正中央显示一个黑色方
您可能关注的文档
- Listentothis2听力原文.doc
- listentothis2英语中级听力2答案及原文.doc
- listentothis2英语中级听力2答案及原文2.doc
- Linux系统的安装周武晴.doc
- 社会主义市场经济理论试题.doc
- liyun斯沃的地位和作用.ppt
- 以人为本-拓展你的人脉圈(下).doc
- LK2000W光伏发电系统N逆变器资料.doc
- 以后要参加计算机二级考试的同学请转载哦.doc
- 社会主义理论与实践题库(在职研).doc
- 2025年医保信息化建设应用试题集:医保政策与信息化技术融合试卷.docx
- 2025年初中地理学业水平考试地图符号含义专项模拟试题卷.docx
- 2025年专升本艺术概论考试模拟试卷:艺术教育实践案例分析与解答.docx
- 2023-2024学年江苏省盐城市五校联盟校高二下学期期中考试地理试题(解析版).docx
- 2025年养老护理员专业知识测试卷:初级技能实操试题.docx
- 2025年成人高考《语文》语言逻辑现代文阅读理解训练题库试卷.docx
- 2025年高尔夫球教练职业能力测试卷:高尔夫球运动生理学知识深度解析试题.docx
- 2025年乡村医生考试必备:农村慢性病管理社区干预策略试题集.docx
- 2023-2024学年江苏省扬州市宝应县高一下学期期中检测地理试题(解析版).docx
- 2025年中学教师资格考试《综合素质》教育教学能力提升历年真题详解与解析试题(含答案).docx
文档评论(0)