J2ME手机游戏开发技术详解
J2ME MIDP手机游戏开发第1章 J2ME技术概览
要点提示 ——打包中的常见问题
如果包的大小有异常,很可能把Thumbs.db文件打进来了,此 文件是系统自动生成的,并且是隐藏的,搜索目录,删除它即可。 在使用混淆器的过程中,如果发生应用程序异常,可以尝试不 使用或者更换混淆器。 JAR文件下载到设备后,如果出现无效文件格式的问题,可 能是由于手机设备不支持MIDP的版本。WTK2.5默认的MIDP版 本是2.1,WTK2.1默认的MIDP版本是2.0。重新打包修改MIDP版 本,再下载即可
1.3.3 知识拓展:应用程序描述文件ห้องสมุดไป่ตู้清 单文件
清单文件用于提供关于 JAR文件内容的信息,它被打包存储在 应用程序描述文件即 JAD (Java Application Descriptior)文件。 JAR文件中,文件名为 MANIFEST.MF 。清单文件中的数据格 它由许多描述 MIDlet套件的属性组成,位于 JAR 文件之外。 式采用“属性名:值”对规范。 MIDP2.0 规定清单文件中必 须包括的属性有: JAD文件中必须包含的属性有: MIDlet-Name:MIDlet套件的名字 注意:前三个属性是和JAD 1、MIDlet-Name:应用程序名称 MIDlet-Version:应用程序版本号 :版本号 文件共享的,属性值必须一 2、MIDlet-Version 致,否则MIDlet无法运行。 :开发商 3、 MIDlet-Vendor:开发商名称 4、MIDlet-Jar-URL : JAR 文件的URL MIDlet-<n> :对套件中每一个 MIDlet 的说明。 MIDlet-<n> 表 5、示对第 MIDlet-Jar-Size :的说明,值分为 JAR 文件的大小 n个MIDlet 3部分,用逗号间隔。 6、MicroEdition-Configuration :CLDC 版本 Name:MIDlet名字 7、MicroEdition-Profile :MIDP 版本 Icon:PNG图象文件名, MIDlet的图标 8、MIDlet-Description :应用程序简介 Class:MIDlet 的类名 9、Media-Price :信息费 MIDlet-Profile:简表(MIDP 1.0或MIDP2.0) MIDlet-Configuration:配置(CLDC)
跟我学J2ME手机应用开发——J2ME概述和系统结构
1.1跟我学J2ME手机应用开发——J2ME概述和系统结构1.1.1与J2ME有关的术语1、3G移动相关技术目前应用在手机上的操作系统主要有Symbian 、Windows CE 、MacOSX、PalmOS和Linux 几种。
Symbian OS(中文译音“塞班系统”)由诺基亚、索尼爱立信、摩托罗拉、西门子、等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统。
它是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙、SyncML、以及3G技术。
微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统。
iPhone内置MacOSX系统,将创新的移动电话、可触摸宽屏iPod以及具有桌面级电子邮件、网页浏览、搜索和地图功能的突破性因特网通信设备这三种产品完美地融为一体。
Palm OS操作系统由Palm公司自行开发的,并授权给Handspring、索尼和高通等设备厂家,这种操作系统更倾向于PDA的操作系统。
ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
适用于嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
随着J2ME的应用,它为移动互联引入了一种新的应用模式,即手机从移动互联网上下载各种应用程序,并在手机中离线运行这些程序。
由于定义了可执行程序下载的标准,并在手机上创立了可执行环境,就形成一种新型的应用模式。
这实际正是Java语言设计最初的目标领域,但是后来在PC和服务器上得到了发展。
2、JCP与JSR(1)JCP的主要职责在于维护Java技术的发展JCP(Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。
J2ME技术在手机游戏的发展分析毕业论文
J2ME技术在手机游戏的发展分析毕业论文目录摘要....................... 错误!未定义书签。
Abstract ..................... 错误!未定义书签。
第1章绪论 (1)第2章 J2ME技术概览 (2)2.1 J2ME的概念 (2)2.2 J2ME简介 (2)2.2.1 J2ME架构 (3)2.2.2 JVM ( 虚拟机 ) (3)2.2.3 MIDP(移动信息设备简表) (4)2.3 手机游戏的发展 (5)2.3.1 目前国内的发展情况 (5)2.3.2 目前国际的发展情况 (6)第3章游戏设计的需求分析 (9)3.1 MIDP中的游戏API (9)3.2 游戏类构成 (9)3.2.1 Boxer类的实现 (10)3.2.2 GameCanvas类的功能及特点 (10)3.2.3 Sprite类的功能及特点 (11)3.3游戏角色的处理 (11)3.4 游戏中的事件处理 (12)3.4.1 key Pressed方法 (12)3.4.2 key Released方法 (13)第4章“Pocket Boxing”手机游戏开发制作 .. 144.1 游戏编程 (14)4.2 格斗类手机游戏实例 (14)4.2.1 “Pocket Boxing”游戏背景介绍及开发环境 (14)4.2.2 MIDlet的构成 (15)4.2.3 MIDlet的生命周期 (16)4.2.4 MIDlet的画面显示基础 (16)4.2.5 游戏项目的创建 (18)4.2.6 命令种类及命令处理 (19)4.2.7 游戏中的描绘处理 (21)4.2.8 游戏状态的类变量 (23)4.2.9 按键事件的处理 (24)4.2.10 设计存在的难点 (25)第5章手机游戏开发过程中的困难 (26)5.1 手机游戏开发存在的困难 (26)5.1.1 移动开发存在的问题 (27)5.1.2 操作环境不兼容性问题 (27)5.1.3 显示速度方面的问题 (28)5.1.4 不同的屏幕尺寸问题 (28)5.1.5 输入问题 (28)5.2 解决方案 (29)第6章 J2ME手机游戏前景展望 (31)6.1 J2ME手机游戏的优势 (31)6.2 J2ME手机游戏的开发意义 (32)第7章结论 (35)致谢 (36)参考文献 (37)英文资料翻译 (38)第1章绪论手机是人们日常生活中所用的非常频繁的通信工具,虽然现在其费用比有线电话高,但是其随时随地的沟通优势,使人们摆脱了线路的束缚。
J2ME手机应用开发技术-5
4.3.1 帧序列
❖ 用于绘制Sprite的原始帧由一个单独的Image 对象提供,此Image可以是可变的,也可以 是不可变的
❖ 如果使用多帧,图像将按照指定的宽度和高 度被切割成一系列相同大小的帧
13
4.3.1 帧序列
❖ 要创建一个静态的Sc Sprite(Image image)
Super(true); }
是否抑制键盘事件
} //代码演示
5
❖ 要创建一个新4的.2G.a1m绘eCa图nvas实例,只能通
过继承并调用父类的构造函数:
protected GameCanvas(boolean suppressKeyEvents)
❖ 与在Canvas上绘图不同,它并不需要通过
paint()放法来实现屏幕的显示 ❖ 为了在GameCanvas上绘图,首先要获得
❖ 代码演示
14
❖ 缺省的帧序4列.就3.是1所帧有序可 列
用帧的顺序排列
❖ 可以使用
setFrameSequence(int[] sequence)
来设置帧序列
❖ 必须在帧序列中手动切换 当前帧。可以调用 setFrame(int), prevFrame()或者 nextFrame()方法来完成
}
❖ 演示
10
总结
❖ GameCanvas 是将画图,按键,业务逻辑全放 在run中,
❖ Canvas也可以将画图,按键,业务逻辑全放在 run中
❖ 游戏的三种框架
11
❖ 顾名思义4.就3是S精p灵rit类e类的使用
❖ 主要为了用来实现游戏里面的人物动画、 移动和碰撞检测而设计的
❖ 使用Sprite可以读取一个存储完整动画的 大图片,然后把这个大图片按照动画的每 一帧分割为一个个小图片
J2ME手机应用开发技术-2
布和画 笔的关系 要用到低级UI必须要继承Canvas 这个抽象 类 14 中国最大、最专业的3G移动互联网人才培养基地 颜色操作 颜色的设置方法 public void setColor(int red,int green,int blue) public void setColor (int RGB) RGB的格式是0x00RRGGBB 高两位的00用于表示Alpha通道,也就是半透明信 息, 一般情况下我们可以忽略 public void setGrayScale(int value) 绘出灰色的 阶度 它的值从0到255共256中灰色阶度 当RGB为0xffffff时表示白色,而当这个值为0时 表示黑色 在photoShop中演示 颜色的RGB构成 15 中国最大、最专业的3G移动互联网人才培养基地 Graphics类 Graphics类 Graphics类是图形处理的基础类 使用Graphics类可以在屏幕上绘制图片、线 条 、文字等多种低级的界面 如果需要编写游戏程序,肯定会用到这个类。 16 中国最大、最专业的3G移动互联网人才培养基地 坐标的概念 坐标 数学坐标 一个原点,位于左下角,水平的x轴,数值向右递 增;与x轴垂直的y轴,数值向 上递增 手机中坐标 原点在左上角,x轴数值向右递增,y轴数值项下递 增 正好与数学里的坐标相反
page 3Biblioteka 可变的Image对象其实就是一个在内存中存 储的对象,可以在内存中修改图像数 据以后 再显示出来 21 中国最大、最专业的3G移动互联网人才培养基地 锚点的概念 水平方向 Graphics.LEFT Graphics.HCENTER Graphics.RIGHT 垂直方向 Graphics.TOP Graphics.BASELINE Graphics.BOTTOM 在画图和文字是用到锚点 22 中国最大、最专业的3G移动互联网人才培养基地 setClip()方法 setClip()方法 只有被它的参数圈定的范围才能够被绘制 public void setClip( int startX,int startY, int width,int height) 效果演示 菜单,游戏中的应用 优点 23 中国最大、最专业的3G移动互联网人才培养基地 Font类 Font类 支持有限的字体 每种手机的默认字体不同 无构造函数 获得字体对象 public static Font getFont(int fontSpecifier) public static Font getF ont(int face,int style,int size) 可以使用Graphics类的getFont()方法获得 当前正在使用的字体对象 24 中国最大、最专业的3G移动互联网人才培养基地 Font类 Font类 25 中国最大、最专业的3G移动互联网人才培养基地 Font类 Font类 要获得一个指定样式、大小的字体,可以采用如下 的方式: Font f=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARG E) 获得系统默认的字体。 getDefaultFont() 应用字体 void setFont(Font f) 字体应用演示 26 中国最大、最专业的3G移动互联网人才培养基地 全屏及中断 两种状态 一普通默认情况下 全屏状态。 可以用setFullScreenMode()方法来对其设 定 两者之间的区别在于当我们使用 全屏幕状 态的时候,Title、Ticker以及Command都 无法在屏幕上显示。 演示(02/n odify) 27 中国最大、最专业的3G移动互联网人才培养基地 全屏及中断 对于外部事件,屏幕会被系统画面所覆盖的 时候,就会调用hideNotify() 当恢 复原状时,就会调用我们原本的画面, 那么系统就会同时调用showNotify() 在实际 操作过程当中,应该覆写这两个方法 演示 28
J2MEJ2ME开发手机游戏-精选文档
游戏三要素
Logic Data Display
J2ME手机游戏知识准备
• 程序入口 J2ME J2SE C++
display
• 需求&&供给 Canvas(画布)Graphics(画笔) Display(显示器) • 常用的函数 getWidth();getHeight();
游戏通用架构
•游戏逻辑 决定行为
蓄势待发
知识准备阶段
Target J2ME开发手机游戏
你所需要的唯一IDENETBEANSFra bibliotek预期成果
1.Helloworld(0秒钟开发 helloworld)
2.手机现原形 3.载入图片(拖拉打1min) 4. 画“囧” 5.天外飞仙(UFO)1.0
J2ME
JAVA 2 Micro Edition 可以简单方便地开发手机软件
实战操演
It ‘s show time now!
开发步骤
• • • • • 1.搭建架构 2.明确接口 3.实现逻辑 4.运行 5.生成
• 创建图像类,是用Image类里面的静态方法 createImage(),而不是用new操作符。 • 画笔的设置,包括颜色字体等
Good news
前面演示代码在官方博客提供下载 cns/SCUTMSC/ 在里面还有手机软件设计大赛&&手机主题设 计大赛。 欢迎参与到大赛的潮流中来
鸣谢
• 手机软件俱乐部 • 广大的听众 • 华南理工大学计算机 科学与工程学院团委、 学生会
logic
data
•游戏数据 决定状态
•游戏画笔 决定显示
Draw and display
具体到J2ME
J2ME专业手机游戏开发基础
J2ME专业手机游戏开发基础游戏的基本结构游戏是什么呢?在游戏中,往往是显示各种各样的画面,玩家可以做一些设定好的控制,画面根据玩家的控制有所变化。
从这儿可以看出,游戏至少需要三个功能-显示画面,接受玩家输入和对输入产生反馈。
这就是常说的渲染,输入输出和逻辑三个模块。
将这三个模块组合在一起有很多方法。
比如事件驱动-画面保持不变直到接受到输入事件,程序进行逻辑运算然后改变画面。
而游戏往往不是这样,游戏是时间驱动的。
也就是说无论有没有输入,游戏都在不停的循环-检查是否有输入,运行逻辑,渲染画面。
这里我多说一句,其实什么样的结构并不能区别一个程序是不是游戏,其实只要可以互动娱乐的程序就可以称为游戏,也不一定要用时间驱动,但采用时间驱动是专业游戏的普遍做法,也是很容易接受的方法-因为从一定程度上讲,游戏很像电影,随着时间流逝画面在改变。
既然是时间驱动,游戏中就会有帧的概念。
所谓帧就是某个时刻显示在屏幕上的画面。
从整体上看,游戏就是一系列的帧不断播放着,像动画片一样,不过玩家可以通过交互改变播放的内容。
而我们开发游戏的主要任务就是安排每一帧的内容。
在每一次游戏循环中,我们需要搜集玩家的输入、运行逻辑以更新游戏的数据、根据更新后的数据安排下一帧显示的内容。
所以一个最简单的游戏结构就是:0 初始化游戏1 是否结束游戏(Yes:转到6)2 搜集玩家输入信息3 运行游戏逻辑4 更新下一帧,显示下一帧5 回到16 清理,结束游戏这是一个最基本的结构,特别对于比较简单的J2ME游戏来说,这个结构更加有代表性。
下面我们将分别讲述专业手机游戏如何实现这个结构中的各个内容。
游戏循环的实现我们需要一个进入后就一直循环下去直到游戏结束的结构。
线程正好可以实现。
最通常的做法是让Canvas实现Runnable接口。
于是我们就可以实现run方法。
下面是一个run方法简化版:1.public void run()2.3.{4.5. exitMidlet = false ;6.7. long startTime = 0 ;8.9. long timeCount = 0 ;10.11. gameInit() ;12.13. int curKey = 0 ;14.15. while (!exitMidlet) {16.17. startTime = System.currentTimeMillis();18.19. //acquire key20.21. acquireKey() ;22.23. //call game loop24.25. gameLoop() ;26.27. //repaint the screen28.29. repaint();30.31. serviceRepaints();32.33.34.35. frameCount++ ;36.37.38.39. //lock fps40.41. timeCount = MIN_DELAY - (System.currentTimeMillis() - startTime);42.43. timeCount = (timeCount<1)?1:timeCount ;44.45. try {46.47. Thread.sleep(timeCount);48.49. } catch (InterruptedException ex) {}50.51. }52.53. endMidlet() ;54.55.}看到我们的while循环了吗?除非在程序逻辑中设定exitMidlet为true -那是当玩家选择了退出游戏,我们的游戏将一直运行下去。
J2ME的手机游戏开发实例与发展分析
J2ME的手机游戏开发实例与发展分析摘要:随着java技术的不断更新,j2me技术在手机游戏的应用逐渐成为游戏市场的新亮点。
本文介绍了j2me技术的原理和架构,之后通过实例分析了j2me在手机游戏中的应用,最后分析了j2me手机游戏的开发意义。
关键词:j2me;midp;软件应用;软件开发随着java语言的不断发展,已经逐渐成长为一种尖端的程序设计语言。
这个最初用来编写与硬件不相关的嵌入式系统的编程语言,现在更是做到了与厂商不相关、与硬件不相关的服务器端技术,在软件开发应用中展示出了强大的生命力和发展前景。
j2me技术正是基于java技术规范的,高度优化的java运行环境,在消费电子领域占据着强有力的位置,尤其是手机游戏的开发上,更是发挥的淋漓尽致。
当前j2me技术最流行的应用就是在制作手机游戏方面,java手机的出现更为这种技术的发挥提供了宽阔的平台。
1 j2me技术及其架构java2 micro edition (j2me)是java2技术微型版,与j2se、j2ee同样具有美国sun微系统公司提出的java技术规范,主要针对消费电子市场,为机顶盒、移动电话和pda之类嵌入式消费电子设备提供的java语言平台。
j2me的运行环境与目标更加多样化,而每一个产品的用途却变得更加单一,资源限制也更为严格,其构成主要是由概要描述、配置、java虚拟机和操作系统等部分组成的标准架构之上的。
这种架构下模块化设计很好的适应了小型计算设备的应用限制,通过j2me架构甚至可以替代小型计算设备的操作系统。
j2me的架构分为configuration、profile和optional packages,它们的组合取舍形成了具体的运行环境。
第一层configuration的作用是与原计算机设备所带有的系统进行互换,它里面还存在着一个配置层,负责处理profile和jvm之间的交互;第二层的profile层,主要是设备的应用程序编程用的接口集合,它对设备横向分类,针对特定领域细分市场,内容主要包括特定用途的类库和api;第三层的optional packages是独立于前面两者提供附加的、模块化的和更为多样化的功能,比如多媒体应用、蓝牙等。
J2ME技术的手机应用软件开发技术 精品
基于J2ME技术的手机应用软件开发技术一、引言随着通讯技术的发展,手机越来越普及,现在的手机的数量已经远远的超过电脑的用户量,同时用户不再满足厂商固化在手机内的几个程序的功能,希望手机成为一个移动通信的终端,能下载程序并运行,实现各种只有在PC机上才能实现的功能。
手机游戏产业在全球已经占有很大的市场,随着无线互联网时代的来临,开发手机中的应用程序已成为一种时尚,市场潜力十分巨大。
二、常见的手机应用软件开发技术开发手机软件的技术有多种,常见的有以下几种:(1)WAP论坛创立的WAP (Wireless Application Protocol)技术。
(2)日本NTT Doo公司1999年2月推出的IMode技术。
(3)韩国市场使用较广GVM技术。
(4)北美的Qualm (高通)公司和中国联通共同推出的BREW (Binary Runtlme Environlnent for Wireless)技术。
(5)SUN公司推出了J2ME (Java 2 Platform Micro Edition,Java2微型版)技术。
其中J2ME一经推出。
得到了越来越多的厂商、开发人员和用户的支持,正迅速成为最为流行的手机应用软件开发技术。
J2ME开发平台与其他技术相比,具有以下特点:(1)平台无关性。
利用Java的“write once,run anywhere”特性,我们可以真正达到程序只要写一次,拿到任何平台上都可以执行(当然前提是必须要该手机厂商提供符合规格的Java Virtual Machine才行)。
(2)面向对象的编程技术。
支持面向对象的编程技术,提供丰富的类库,在CLDC/MIDP中提供了与网络相关API函数。
(3)安全性。
Java语言在原始设计上就将安全性的因考虑进去,由于Java语言不支持指针的使用,在Java程序内访问某一块内存的数据,不会因为下载了一个错误的Java应用程序而对设备或网络造成危害。
J2ME手机游戏开发技术与实践课程设计 (2)
J2ME手机游戏开发技术与实践课程设计一、课程设计目标本课程设计旨在培养学生对J2ME(Java 2 Mobile Edition)手机游戏开发技术的理解与实践能力,帮助学生了解J2ME游戏开发的基本理论和技术要点,掌握J2ME游戏开发所需的工具和平台环境,并能独立完成一个小型的J2ME手机游戏开发项目。
二、课程设计内容1. J2ME介绍本课程将首先介绍J2ME的基本概念和特点,分析其在手机游戏开发中的优势和不足。
2. J2ME游戏开发工具本课程将介绍J2ME游戏开发所需的工具和平台环境,包括Eclipse集成开发环境、J2ME Wireless Tool Kit、Java SDK、Java ME Platform SDK等,让学生熟练掌握J2ME游戏开发所需的开发工具和平台环境。
3. J2ME游戏开发基础本课程将讲解J2ME游戏开发的基础知识,包括如何创建一个J2ME游戏工程、如何实现游戏的图像显示、声音播放、触屏控制等功能的实现。
4. J2ME游戏实例分析本课程将分析一些经典的J2ME游戏实例,帮助学生理解J2ME游戏开发的实现方法和技巧,同时学生将根据这些实例进行一些小型游戏的开发。
5. J2ME游戏上线和营销课程最后将介绍移动设备游戏的上线和营销策略,包括如何通过各种渠道发布和推广自己的J2ME游戏,为学生未来从事移动游戏开发,为自己的游戏营销提供参考和指导。
三、课程设计任务完成一个小型的J2ME手机游戏开发项目,完成以下步骤:1.案例选取:根据个人兴趣选定一款适合J2ME平台的游戏作为本次课程设计的开发对象。
2.游戏设计:使用MindManager或其他思维导图工具,完成游戏设计文档(GDD),包括游戏说明、界面设计、关卡设计、声音和特效设计、游戏规则等内容。
3.开始开发:在Eclipse中创建一个新的J2ME工程,按照游戏设计文档中的设计实现游戏主体框架,并逐步实现游戏的各种功能。
4.测试调试:完成游戏基本功能开发后,需要进行测试和调试,确保游戏运行正常,没有不良后果和内存泄露等问题。
J2ME程序开发全方位基础讲解汇总
一、J2M E中需要的J a v a基础知识现在有大部分人,都是从零开始学J2M E的,学习J2M E的时候,总是从J a v a 基础开始学习,而且现在讲J a v a基础的书籍中都是以J2S E来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2M E中用到的和不需要的J a v a基础知识做一个简单的说明:J2M E中使用到的J a v a基础知识:1、J a v a语法基础:包括基本数据类型、关键字、运算符等等2、面向对象的思想:类和对象的概念,继承和多态等等。
3、异常处理4、多线程J2M E中没有用到的J a v a基础知识:1、J D K中j a v a c和j a v a命令的使用2、J a v a基础中的很多类在J2M E中没有,或者类中的方法做了大量的精简。
所以建议在J2M E中熟悉类库。
3、A p p l e t、A W T、S w i n g这些知识在J2M E中根本使用不到。
简单说这么多,希望学J2M E的朋友们能少走一些弯路,不足之处希望大家积极指正和补充。
二、J2M E中暂时无法完成的功能列一些J2M E中暂时无法完成的功能,希望大家能积极补充:1、在手机中不更改代码实现移植,主要指游戏。
2、动态修改按钮文字。
3、在C a n v a s上接受中文输入。
4、操作本地资源、例如地址本、已收短信息等。
5、制作破坏性的手机病毒。
6、其他等待大家来补充。
三、J2M E的跨平台性J2M E技术源于J a v a,所以也具有J V M的优势,可以在支持J a v a的平台上进行移植,但是现在的J2M E技术在跨平台上却做的很糟糕,我们来简单看一下原因:1、手机的屏幕尺寸不一:这个主要在界面制作上。
如果你使用的是高级用户界面,比如你做的是应用开发或者用户登陆、用户注册这样的通用功能时,一般没有什么问题。
如果你使用的是低级用户界面,比如你做的是游戏,那么你就需要考虑这个问题了。
2、厂商的扩展A P I不统一:例如N o k i a的扩展A P I类库U I系列,在别的手机上或者没有实现,或者包名不同等等。
第1章-J2ME简介
(1)MIDP API ) (2)OEM Specific API 2)
用Java编写程序的最大优点是可以一 编写程序的最大优点是可以一 次编写,随处运行。 次编写,随处运行。
1.2 J2ME应用介绍 J2ME应用介绍 1.2.1 J2ME手机游戏 J2ME手机游戏
如同Internet的普及导致网络游戏的高 的普及导致网络游戏的高 如同 速发展一样, 速发展一样,手机的普及导致手机游戏市 场呈现爆炸式的发展, 场呈现爆炸式的发展,随着手机性能的增 强,在未来几年里对手机游戏开发的需求 将大幅上涨。 将大幅上涨。
1.1.2
J2ME与Java体系结构 ME与Java体系结构
J2EE、J2SE和 图1-1 J2EE、J2SE和J2ME 的应用领域
1.1.3
JVM、CVM和KVM介绍 JVM、CVM和KVM介绍
Java 程序是以边解释边执行的方式运 行的,所有的Java 程序都会被编译成为二 行的,所有的 进制代码并运行在Java虚拟机上(J2EE、 虚拟机上( 进制代码并运行在 虚拟机上 、 J2SE 中的 中的Java 虚拟机简称为 JVM)。 )。
也就是说, 也就是说,J2ME 先把所有的嵌入式 装置利用Configuration 的概念区隔成两种 装置利用 抽象的型态。 抽象的型态。
1.1.5
MIDP介绍 MIDP介绍
J2ME 使用配置(CDC或CLDC)和 使用配置( 或 ) 简表( 简表(Profile)定制运行时环境(Java )定制运行时环境( Runtime Environment,Java,JRE)。 , , )。
其实这并不矛盾, 其实这并不矛盾,因为这些就是在相 关规范中制定的。 关规范中制定的。
1.1.1
J2ME手机应用开发技术-1
MIDP应用程序的生命周期
三个状态
运行状态(Active) 暂停状态(Pause) 销毁状态(Destroyed)
状态的含义
运行状态:程序正在运行 暂停状态:资源暂时被释放,随时可运行 销毁状态:释放资源,关闭程序
中国最大、最专业的3G移动互联网人才培养基地
中国最大、最专业的3G移动互联网人才培养基地
手机游戏开发流程
开发
美工的工作 音乐的工作 程序员的工作,开发规范 ,自测规范,作品演示
开发手机游戏的三种方式
换图 改版 原创 标题党
中国最大、最专业的3G移动互联网人才培养基地
手机游戏开发流程
测试
开发出一个机型就开始测试 测试规范 测试流程
ቤተ መጻሕፍቲ ባይዱ
中国最大、最专业的3G移动互联网人才培养基地
由于Java语言自身的特点,和系统的关联不大,所以开 发速度很快。程序的开发周期比较短。
技术入门快
由于JAVA语言相当的普及,而对于有一定JAVA语言基 础的人来说,学习J2ME技术的门槛很低,所以J2ME技 术的普及速度很快。
扩展性强:可适应Android、BlackBerry(黑莓)开发
中国最大、最专业的3G移动互联网人才培养基地
配置文件
作用
为了能够让手机的操作系统能够辨别出具体的 每个程序 在配置文件中说明运行这些程序所需要的硬件 条件和软件平台
JAD文件和MANIFEST文件。 JAD文件则说明了具体的运行配置。 MANIFEST文件用来描述MIDlet Suite的配 置
中国最大、最专业的3G移动互联网人才培养基地
手机游戏开发流程
策划 内部评审 开发 测试 移植 销售 上线,组织活动
基于J2ME的Java手机游戏开发技巧
46 •电子技术与软件工程 Electronic Technology & Software Engineering软件开发• Software Development【关键词】J2ME Java 手机游戏 开发技巧现阶段,智能手机已经得到广泛应用,Java 功能在移动设备中的应用,对手机增值服务产生较大影响,使人们对信息获取方式更加便捷,日常生活变得更加丰富。
在Java 技术的基础上J2ME 诞生,主要应用在消费性电子产品当中,如手机、PDA 应用等,目前J2ME 技术的使用已经成为一种潮流,为移动游戏设计与开发提供了新思路。
1 J2ME概述1.1 简介J2ME 技术是一种以消费性产品为目标的、高度优化的Java 运行环境,其中包括移动电话、寻呼机、可视电话、汽车导航系统等等。
Java 作为计算机编程语言的一种,J2ME 属于其中十分重要的组成部分,在手机、PDA 中得到广泛应用。
同时,Java 作为开放平台,能够使更多开发商在其基础上进行各项功能的设计与开发,手机用户也可利用该技术体验到更多动态、个性化的增值服务。
与Java 相比,J2ME 在移动电话支持游戏能力上具有较大优势,与WAP 、SMS 相比来看控制力更强,并且能够借助无线网络与服务器远程连接,Java 手机的普及为J2ME 开创了更大的应用空间,使其在当前移动游戏开发中得到广泛应用。
1.2 总体架构J2ME 的运行环境为CDC 与MIDP ,对于完整的JRE 来说,J2ME 主要包括CLDC 与MIDP 两个方面,其中,CDC 能够对JVM 起到决定性作用,而MIDP 的主要作用在于通过加入特定域的类对应用程序进行定义。
CDC 能够在运行环境进行重新定义,使其成为一组核心类与特定类型设备中的JVM 。
虽然在基于J2ME 的Java 手机游戏开发技巧文/任灏榕J2ME 中,一般将虚拟机看作为JVM 的最终,但是其与KVM 、CVM 均属于JVM 的子集。
跟我学J2ME手机应用开发——RMS相关技术及应用实例(第1部分)
1.1跟我学J2ME手机应用开发——RMS相关技术及应用实例(第1部分)1、RMS(Record Management System)(1)移动数据库是企业移动解决方案的基本工具移动数据库系统通常应用在诸如便携式电脑、车载设备、移动电话等嵌入式设备中,它不仅能够管理本地终端的数据与信息,而且还能连接中心数据库处理各种企业事务,满足不同行业、不同的用户在移动环境下的各种信息处理需求,大大地提高了信息的时效性。
本地查询是指所需信息存储在移动设备内的嵌入式数据库中,用户在离线模式下通过查询嵌入式数据库得到所需信息的模式。
(2)可以把RMS理解为MIDP上的简单的数据库管理系统因为在某种场合下,也许会要求程序中生成的对象在程序结束后并不立即被消灭,而是把它存储到某个地方以供我们以后取用。
但J2SE中提供的可持续存储机制如JBDC和Object Serialization API并不适合用于移动设备,所以MIDP中定义了RMS来提供这种机制。
RMS是J2ME应用程序进行持久性存储的唯一途径,而应用持久性存储可以纪录游戏的排行榜、记录用户输入的用户名和密码等方面的信息。
(3)RMS其实是轻量级的嵌入式关系数据库为了支持离线操作,移动客户必须在本地存储应用程序数据,轻量级的嵌入式关系数据库是理想的数据存储工具。
与一些线性数据存储工具如纯文本文件或J2ME的记录管理系统相比,在存储复杂的数据时,嵌入式关系数据库要有效得多;智能移动客户端的嵌入式数据库可以通过无线网络与企业数据库进行数据同步,使得嵌入式数据库的数据保持更新。
2、与持久性存储有关的概念(1)什么是持久性存储持久性存储简单的理解就是数据不因为程序的退出而丢失,而一般在程序中声明的变量都是存储在stack或者heap上的,程序退出后这些数据会被清除以释放资源。
而存储在RMS 中的数据是不会被清除的。
其中的记录存储是由各个记录组成的二进制文件,而记录是记录存储中的一个存储单元,每个记录是一个字节数组。
J2ME手机游戏开发入门
动画的原理
• 系列动作的图片连续绘出
23
精灵动画
左行
0
1
2
后行
3
4
5
前行
6
7
8
右行
9
10
11
24
让精灵动起来
Sprite的方法 的方法
• • • setFrame(int index) – 显示哪一帧,设置动画开始的画面 nextFrame() – 显示下一帧 Move(int dx,int dy) – 在x和y方向上移动
16
先写一个Midlet 先写一个Midlet
• 在手机上运行的 在手机上运行的Java程序叫:MIDlet 程序叫: 程序叫 • 创建一个MIDlet的步骤: 的步骤: 创建一个 的步骤
1 2
打开Eclipse 打开 新建J2ME Midlet 新建 Suite
3
新建J2ME 新建J2ME Midlet
J2ME手机游戏开发入门 手机游戏开发入门
Version 3.0
主要内容
• • • • • • • • 手机平台的特点 J2ME的优势和劣势 的优势和劣势 J2ME程序的运行环境 程序的运行环境 J2ME程序的开发环境 程序的开发环境 游戏的种类 游戏程序的基本功能 J2ME游戏开发关键的包和类 游戏开发关键的包和类 J2ME游戏开发实战 游戏开发实战
注意: 注意: 需要降 低循环 的速度
向右移动
if((this.getKeyStates() & GameCanvas.RIGHT_PRESSED)!=0) { if(!this.moveRight) { this.moveLeft = false; this.moveRight = true; this.moveUp = false; this.moveDown = false; this.role.setFrame(9); } this.role.nextFrame(); if(this.role.getFrame()==0) { this.role.setFrame(9); } this.role.move(5, 0); } 27
J2ME手机游戏开发技术详解
第1章J2ME概述本章主要介绍J2ME的相关背景知识。
读者需要掌握以下知识点:❑J2ME的3层体系结构。
❑CLDC类库和通用连接框架。
❑MIDP 2.0的新特性。
❑CLDC/MIDP总体体系结构。
❑CLDC/MIDP的安全机制。
1.1 J2ME体系结构为了适应移动数据的发展,推进无线电子商务等业务的发展,J2ME(Java 2 Micro Edition)即用于嵌入式系统的Java被引入无线领域。
J2ME的出现实际上是Java技术的回归。
作为Java 2平台的一部分,J2ME与J2SE、J2EE一起,为无线应用的客户端和服务器端建立了完整的开发、部署环境。
随着J2ME的应用,它为移动互联引入了一种新的模型,即允许手机可以从互联网上下载各种应用程序,并在手机创造可执行环境离线运行这些程序。
由于定义了可执行程序下载的标准,并在手机上创立了可执行环境和程序开发语言,由此,在移动通信业第一次为软件开发商创造了巨大的商业机会,手机用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量。
1.1.1 Java的版本Java在10多年的发展历程中,已经成长为一个全面而成熟的面向对象应用程序开发平台,它适用于广泛的、异构的编程环境,这些应用的涉及面非常广,从企业级的服务器应用到传统的桌面应用以及各式各样面向小型设备的嵌入式应用。
Java 2平台包括3个版本,每个版本都针对不同的用户群,如图1-1所示。
这3个版本具体为:❑Java 2平台企业版(J2EE):用于满足企业向它们的客户、供应商、雇员提供服务的需求,提供了大型的、可升级的、可靠的商业服务器解决方案。
❑Java 2平台标准版(J2SE):用于传统且成熟的桌面系统。
❑Java 2平台微型版(J2ME):主要面向消费电子产品和嵌入式设备。
说明:Java SDK 1.2及以后的版本都统一改名为Java 2,因此这些名字中都有2。
图1-1 Java的版本结构Java 2各个版本所面向市场的每一个版本都有其自己的虚拟机,这些虚拟机都为其目标应用做了特别优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1.1 Java 的版本
Java 在 10 多年的发展历程中,已经成长为一个全面而成熟的面向对象应用程序开发平 台,它适用于广泛的、异构的编程环境,这些应用的涉及面非常广,从企业级的服务器应 用到传统的桌面应用以及各式各样面向小型设备的嵌入式应用。 Java 2 平台包括 3 个版本,每个版本都针对不同的用户群,如图 1-1 所示。这 3 个版本 具体为: Java 2 平台企业版(J2EE):用于满足企业向它们的客户、供应商、雇员提供服务 的需求,提供了大型的、可升级的、可靠的商业服务器解决方案。 Java 2 平台标准版(J2SE):用于传统且成熟的桌面系统。 Java 2 平台微型版(J2ME):主要面向消费电子产品和嵌入式设备。
1.1.3 J2ME 配置(Configuration)
J2ME 中的应用是针对某个特定简表所写的,而简表又是基于某个特定配置的扩展,因 此配置的所有特征都自动包括进简表,然后被针对这个简表所写的应用所使用。
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
说明:由于简表运行于特定配置之上,某种设备的配置规定了 Java 虚拟机特征和相应的
API 规范,简表的实现在符合规定的条件下,便可以安全地认为,简表的实现以 及使用这个简表的应用都能在该设备上运行。 为了避免过于杂乱,到目前为止,通过 Java 规范定义的只有两种配置,它们是: Connected Limited Device Configuration (有限连接设备配置,CLDC):这个配置 致力于低端的消费类设备。CLDC 目标设备典型的例子包括个人的、移动的、电池 供电的、互联的信息设备,例如手机、双向寻呼机和 PDA。这些设备的特点是无 线连接、没有稳定的电源供应(通常使用电池)、设备资源极少。这些配置包括了 一些新的类,并非来自 J2SE API,而是特别为适应小型设备而设计的。 Connected Device Configuration (连接设备配置,CDC):这个配置致力于高端消 费类产品。CDC 目标设备的典型例子包括共享的、互联的信息设备,包括电视机 顶盒、网络电话、车载计算设备、Internet 电视和高端通信设备。这些设备的特点 是高带宽的网络连接、电源稳定、设备资源比较受限。这个配置包含了比 CLDC 更加复杂的 Java 库和虚拟机特征的集合。 如图 1-3 表示了 CLDC、CDC 和 J2SE 之间的关系。CLDC 和 CDC 的大部分功能都来 源于 J2SE。从 J2SE 环境中派生的类必须完全与 J2SE 环境中的类相符合或者是其子集。因 为 CDC 与 CLDC 针对的设备 CPU 处理能力和内存是不一样的,所以它们所使用的虚拟机 和核心类库也不相同,CDC 的核心类库也比 CLDC 的核心类库要大。另外,CLDC 和 CDC 可以引入一些并非从 J2SE 得来的特征,这些是专门为适应小型设备而设计的。 在 J2ME 环境中加入配置层的最重要理由是,跨越多个 Java 平台实现的 Java 核心类库 总是跟 Java 虚拟机的实现紧密结合在一起。在配置规范中的微小变动就会导致 Java 虚拟机 内部设计的大量重大修改,还可能对内存的需求也增加了很多。这种修改不但代价高昂, 而且费时费力。少量的配置意味着很少几个虚拟机实现就能满足大量的简表和大量不同硬 件类型设备的要求。 这个 J2ME 所提供的经济上的尺度, 对于在消费类和嵌入式设备工业中 获得成功并带来效益是非常重要的。 图 1-4 说明了两种配置的具体应用。 J2ME 没有定义满足这两种配置的标准化用户接口。 Sun 也承认现在的消费设备多种多样, 而用户界面各不一样, 所以定义一个可用于所有用户 的界面是不可能的。J2ME 中的用户界面定义在简表中。
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
第 1 章 J2ME 概述
本章主要介绍 J2ME 的相关背景知识。读者需要掌握以下知识点: J2ME 的 3 层体系结构。 CLDC 类库和通用连接框架。 MIDP 2.0 的新特性。 CLDC/MIDP 总体体系结构。 CLDC/MIDP 的安全机制。
图 1-4 CDC、CLDC 的应用
1.1.4 K 虚拟机(KVM)
配置同样对其基础的 Java 虚拟机的特性做了规范。 CDC 与 CLDC 都有它们各自的优化 虚拟机。CDC 用的虚拟机是 CVM,而 CLDC 用的是 KVM,CVM 比 KVM 包含更多的功 能和支持更多的特性。 KVM 是一个专门为小型、资源受限设备所设计的紧凑的便携的 Java 虚拟机,是用于 J2ME 平台最小的虚拟机,并且是用于 CLDC 配置的虚拟机。J2ME 应用程序并不一定非要 使用 KVM,J2ME 技术可以使用任何虚拟机,不过至少应当有 KVM 这样的功能。 KVM 是完全从头开始编写的,其设计目标包括: 虚拟机的大小和类库为 60KB~80KB 左右。 内存占用为几十 KB。 在具有 16 位和 32 位处理器的设备上,有相当的性能。 高度可移植和可扩展,特定于机器的代码总量很少。 多线程和垃圾回收是独立于系统的。 可以对虚拟机的组件进行配置,以适合于特定设备,从而增强了灵活性 为什么称为 KVM 呢?K 代表 Kilo。 这样命名是因为它的内存容量是用几十 KB 来衡量 的。这典型地应用于数字蜂窝电话、传呼机、个人信息管理器和便携式终端等。
·3·
图 1-1 Java 的版本结构
Java 2 各个版本所面向市场的每一个版本都有其自己的虚拟机, 这些虚拟机都为其目标 应用做了特别优化。
1.1.2 J2ME 的 3 层体系结构
J2ME 用于为信息家电市场提供应用服务,这些信息家电包括呼叫器、移动电话、像 Palm 这样的个人数字助手(PDA)、电视机顶盒、POS 终端以及其他的消费电子设备,而 且每一种家电设备又有不同的特性和界面。 为了满足消费者和嵌入式市场不断发展和多样化的需求,J2ME 体系结构采用模块化、 可扩展的设计。这种设计是通过一个 3 层软件模型来实现的,该模型构建于本地操作系统 之上。 J2ME 的 3 层体系结构依照各种设备的资源特性, 将 J2ME 技术架构分为简表 (Profile) 、 配置(Configuration)和 Java Virtual Machine(JVM)3 层,然后再进一步细分,这使 J2ME 能够在每一类设备的限制下工作,而同时提供最低限度的 Java 语言功能性,如图 1-2 所示。
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
·6·
J2ME 手机游戏开发技术详解
CDC
CLDC
图 1-3
J2SE、CDC 和 CLDC 类库之间的关系
第 1 章 J2ME 概述
·5·
配置在 3 层体系结构中起到了承上启下的作用,它定义了针对在总存储空间、电源、 网络连接等硬件功能有类似需求的某个水平范畴或者一组设备的 Java 平台。对配置的说明 如下: 规定了所支持的 Java 编程语言特征。 规定了所支持的 Java 虚拟机特征。 规定了所支持的基本 Java 类库及其 API。
简表层 Profile
连接设备 配置
有限连接 设备配置
配置层 Configuration 虚拟机 Virtual Machine
本地操作系统
图 1-2 J2ME 的分层结构
Java 虚拟机(JVM)层:这一层是针对设备本地操作系统定制的 Java 虚拟机的实
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
·4·
J2ME 手机游戏开发技术详解
现,支持特定的 J2ME 配置,就像使用所有 Java 技术一样,J2ME 的核心也在一种 虚拟机中。 配置(Configuration)层:面对的是大量各种不同的小型嵌入式设备,它们在外观 和功能上均各不相同。J2ME 将这些设备进行分类,将一些共性提取出来形成适合 于某个范畴中设备可用的规范,称为“配置”。读者也可以将配置理解成为对硬件 的描述,所以通过定义配置的方法就能够清楚地描述硬件功能。 简表(Profiles)层:简表层定义了特定系列设备上可用的应用程序编程接口(API) 的最小集。简表在一个特定的配置上面实现。应用程序是针对特定的简表编写的, 因此可以移植到支持该简表的任何设备上。 另外, 一个设备可以同时支持多个简表。 用户和开发人员看到最多的就是这一层。 Java 虚拟机是 J2ME 技术的核心, 但是配置和简表提供特殊环境的类应用程序接口。 配 置是用于一组通用设备的最小的 Java 平台,而简表则为具体的设备家族或特别的应用程序 提供更具体的功能。 每个配置和简表处理一般或具体的消费产品。配置和简表规范是由多种多样的设备生 产商和用户共同开发并建立的。 前面已提到,配置是用于一组通用设备的最小的 Java 平台,常常归为一种横向的设备 分组。相对来说,横向分组设备是那些共享相同的内存安排、通信带宽、能量需求以及用 户功能的设备。一般认为,配置能够提供这众多的设备的所有需求。配置对于简表的实现 非常重要,它定义了某一类设备所采用的 Java 虚拟机和 Java 类库的最小集合,这类设备代 表了某一特定水平市场。在某种程度上,配置定义了这一范围内能应用于所有设备的 Java 平台功能和类库的“最小公分母”;另一方面,简表完善了配置,为某个具体的设备家族 或某个具体的工业片段应用程序提供了更高的性能。换言之,简表为具体的纵向市场设备 如移动电话提供更多的性能。这里的关键是:简表必须完善配置,没有配置和虚拟机提供 核心类应用程序接口和运行期环境的话,简表也不会工作。 通常,简表为一种给定的垂直分组设备提供用户界面、输入法、持久存储机制。这类 简表被认为是被用来开发这些移动信息设备应用程序的完整的工具包。一般所见到最多的 应用程序简表的例子有移动电话简表和个人数字助手(PDA)简表,其他简表为范围宽广 的其他信息设备提供了非常特殊的功能或应用程序可移植性,这方面的例子就是提供远程 方法调用 (RMI )功能的简表和提供统一银行事务的简表。 可以这样理解,Java 虚拟机和构建于此虚拟机之上的配置规范,它们一起代表了某一 种类设备的基本能力,而更进一步的设备分类上的区别是通过简表层提供的 API 实现的。 为了满足更多新的应用的需要,简表可以通过扩充类库来强大自己的功能。