为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

手机网络版小说阅读器设计与开发

2017-09-02 36页 doc 75KB 39阅读

用户头像

is_841159

暂无简介

举报
手机网络版小说阅读器设计与开发手机网络版小说阅读器设计与开发 毕业设计说明书 学生姓名: 学号: 学 院: 件职业技术学院软件学院 专 业: 指导教师: 2010年6月 手机网络版小说阅读器设计与开发 摘要 近年来,随着信息技术的飞速发展,移动通讯与互联网的融合日趋明显,作为电子商务领域的新生力量——移动商务,开始成为传统电子商务的有益补充,显示出巨大的发展潜力和成长空间。移动商务以其灵活、简单、方便的特点正受到越来越多人的关注,人们迫切希望能够享受到移动商务带来的便利。 国内外越来越多的厂商在Sun公司、摩托罗拉、西门子等公司的技术支持下...
手机网络版小说阅读器设计与开发
手机网络版小说阅读器设计与开发 毕业设计说明书 学生姓名: 学号: 学 院: 件职业技术学院软件学院 专 业: 指导教师: 2010年6月 手机网络版小说阅读器设计与开发 摘要 近年来,随着信息技术的飞速发展,移动通讯与互联网的融合日趋明显,作为电子商务领域的新生力量——移动商务,开始成为传统电子商务的有益补充,显示出巨大的发展潜力和成长空间。移动商务以其灵活、简单、方便的特点正受到越来越多人的关注,人们迫切希望能够享受到移动商务带来的便利。 国内外越来越多的厂商在Sun公司、摩托罗拉、西门子等公司的技术支持下开始开发基于J2ME平台的无线应用服务。J2ME 是SUN 公司针对嵌入式、消费类电子产品推出的开发平台,与J2SE 和J2EE 共同组成Java 技术的三个重要的分支。J2ME 实际上是一系列规范的集合,由JCP 组织制定相关的Java Specification Request(JSR)并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过TCK 测试,这样确保兼容性 。J2ME平台由于自身的特点,己经成为当前业界流行的无线应用开发支柱平台。利用J2ME提供的功能,电子商务、企业的商务应用等都可以扩展到无线上来,基于J2ME平台的手机应用开发已经成为热点。本文首先分析了J2ME在当前移动终端发展中所具有的重要角色,选择J2 ME作为移动终端软件开发平台的优势。实际开发了一个基于2ME平台的多媒体手机阅读器软件,进行了相关理论和技术的分析。并在此基础上,对W3C提出的CC/PP框架进行了系统的分析,并针对这款手机阅读器进行了改进分析,以达到个性化服务的效果。 关键词: 移动设备,J2ME,MIDP,阅读器 Mobile STAND-ALONE NOVEL DESIGN AND DEVELOPMENT OF READER Abstract In recent years, along with the information technology rapid development, Mobile communication and the Internet fusion is day by day obvious, took the electronic commerce domain the strength for new life-Mobile Commerce, started to become the tradition electronic commerce the beneficial supplement, demonstrated the huge development potential and the growth space.The motion commerce by its nimble, simple, the convenient characteristic is receiving the more and more many person's attention, the people earnestly hope can enjoy the convenience which brings to the motion commerce. The domestic and foreign more and more many manufacturers in company's under and so on Sun Corporation, Motorola, Simens technical support start to develop based on the J2ME platform wireless application service.J2ME is SUN Corporation the development platform which in view of embedded, the expense class electronic products promotes, composes the Java technology together with J2SE and J2EE three important branches.J2ME in fact is a series of standard set, formulates related Java Specification Request(JSR) by the JCP organization and issued, each manufacturer can defer to the standard to carry on the realization on own product, but must have through the TCK test, to guarantee the compatibility like this. The J2ME platform as a result of own characteristic, oneself after becomes the current field popular wireless application development prop platform.The function provides which using J2ME, electronic commerce, enterprise's commerce using and so on all may expand wireless to comes up, already became the hot spot based on the J2ME platform handset using the development..This essay first analyses the important role of J2 ME in thedevelopment of mobile terminal, the advantage of choosing J2ME as the development platform of mobile application. Developed a multi-media telephone reader application on the J2ME?platform, and carried out relevance theory and the technology analysis. After that, carried out systematic analysis on the CC/PP frame broght by W3C .Base the application, according the theory of CC/PP, carried out the improvement analysis and design, in order to achieve the effect of individuation service. Keyword: Mobile equipment, J2ME, MIDP, Reader 目 录 1 引言 ............................................................. 1 1.1 课题背景 ....................................................... 1 1.2 研究目的 ....................................................... 2 1.3 论文组织结构 ................................................... 2 2 J2ME技术概览 .................................................... 3 2.1 开发环境 ....................................................... 3 2.2 J2ME的概念 ..................................................... 4 2.3 J2ME简介 ....................................................... 4 2.3.1 J2ME架构 ..................................................... 5 2.3.2 JVM ( 虚拟机 ) ............................................... 5 2.3.3 MIDP( 移动信息设备简表 ) ................................... 6 2.4 Java Appication Manager ....................................... 6 3.1 本程序需解决的有关技术问题 .................................... 7 3.2 程序 ...................................................... 8 3.3 Canvas类 ...................................................... 10 3.4 Graphics类 .................................................... 10 3.5 MIDP1.0技术下的绘制背景技术 ................................... 11 3.6 MIDP2.0新增的GameCanvas包 .................................... 11 3.7 PNG图片 ................................................... 12 3.8内存的优化 ..................................................... 13 3.9 内存检测器 .................................................... 13 3.10 关于混淆器 ................................................... 13 4 程序分析和具体实现 ............................................. 14 4.1 手机阅读器读取文本 ............................................ 14 4.2 系统设计 ...................................................... 16 4.2.1 基本概念 .................................................... 16 4.2.2 软件设计任务 ................................................ 16 第 I 页 共II页 4.2.3 总体设计 .................................................... 16 5手机游戏开发过程中的困难 ......................................... 21 5.1 手机软件开发存在的困难 ........................................ 21 5.1.1 移动开发存在的问题 .......................................... 21 5.1.2 操作环境不兼容性问题 ........................................ 22 5.1.3 不同的屏幕尺寸问题 .......................................... 22 5.2 解决 ...................................................... 22 6 总结与展望 ...................................................... 23 6.1 J2ME手机游戏的优势 ............................................ 23 6.2 J2ME手机软件的开发意义 ........................................ 24 参 考 文 献 ....................................................... 27 致 谢 ............................................................. 28 第 II 页 共II页 1 引言 1.1 课题背景 手机是人们日常生活中所用的非常频繁的通信工具,虽然现在其费用比有线电话高,但是其随时随地的沟通优势,使人们摆脱了线路的束缚。手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。目前几乎人手一部或几部手机,正是由于手机的高普及率,使得无线移动商务才得以迅速普及和发展。 人们正在不断地给手机增加新的随着通讯技术的发展及手机的普及 , 功能 ,其中 ,使手机实现一般只有 PC机才具有的功能——下载各种程序并运行 ,是目前手机发展的一个重要方向。为此 ,人们提出了各种各样的解决方案 ,其中基于 JAVA的 J2ME方案无疑是最引人注目的。 JAVA技术已经从一种最初用来编写与硬件无关的嵌入式系统的编程语言变成了一种与厂商无关、与硬件无关的健壮的服务器端技术,它使整个企业界可以全面发掘以Web为核心的应用程序的巨大潜力。随着JAVA技术的不断更新提高,J2ME技术的出现,使得手机游戏越来越成为我们关注的焦点。J2ME技术目前最流行的就是在制作手机游戏方面,JAVA手机的出现使得这一技术更有它的用武之地,发挥着他灵活、轻便、快捷的作用。近几年,由于微处理器性能的大幅提升,加上无线通讯技术的突破,手持式移动设备开始受到大众的青睐。短短几年内,手机已经升级了几代产品,普及率逐年攀升,生产效率不断上升,产品价格比个人电脑的摩尔定律有更惊人的下调,以至手机是大多是城市居民不可缺少的一件随身设备。继短信、彩信等服务之后,中国移动提供基于Java的百宝箱业务,应用产品遍及商务应用、信息获取、英汉互译、游戏娱乐等多媒体领域。根据官方公布的统计数据,我国移动电话用户已突破3亿。依托这样的市场,一旦无线Java应用大规模开展起来,将会创造出比短信业务更为惊人的利润。Java语言原先的开发目的与市场的需求不谋而合,并且也已经成为手机应用程序开发的,国际大公司如Nokia、Motorola及Siemens等所设计的 第 1 页 共 30 页 手机内都加入Java程序的支持,可见在不久的将来,Java将会成为移动设备上最热门的语言。手机中将Java语言引入,作为一种通用的开发标准,并将向市场推广普及仅仅短短几年,J2ME仍是一种新型的技术,中文资料除台湾出版过相关书籍外,国内相关介绍资源很有限,国内J2ME开发商也屈指可数,名声较响的Digital-Red公司也仅成立于1999年。本文可算是对新技术的一些尝试,代表对无线平台应用程序推广的一些努力。 1.2 研究目的 随着人们对快节奏的学习充电的重视,对移动阅读的需求也相应增大,为了满足人们移动阅读的愿望,因此我们急需J2ME开发一款能满足人们日常阅读得简洁方便的手机软件。既然阅读器面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习使用技巧。保持程序操作的简易是最基本的要求。阅读器最基本的功能包括:载入图书、前进、后退、存档、读取书签,更换背景。并且阅读器还可以阅读网络上的资源,实现资源利用的最大化。此外,该程序可下载到手机上,随时随地的进行阅读,这样就可以通过这种方式开发一些学习软件,使手机用户可有一个随身学习的工具书。 1.3 论文组织结构 本篇论文共分为七个部分:包括引言,J2ME技术概览,需求分析、程序结构和相关技术,程序分析和具体实现,困难总结,前景展望和结论,参考文献及致谢。其中第四部分“程序分析和具体实现”是本篇论文的重点。整篇论文都是围绕着这一部分来展开论述的,在这一部分里详细介绍网络版手机阅读器的开发全过程和开发过程中存在的疑难问题。其中包括:手机阅读器如何读取文本,J2ME文本阅读器中的文本格式,读取文本文件的主要技术实现,将文本文件内容显示出来的技术实现,阅读器中的菜单设计技术实现。 通过对J2ME的详细介绍我们可以从中了解到其自身的作用,近年来,随着JAVA手机的诞生,其无可替代的灵活性与轻便性致使JAVA手机游戏成为游戏市场的又一亮点,它的前景无可限量,必将在我们以后的生活中发挥着重要的作用。 第 2 页 共 30 页 2 J2ME技术概览 2.1 开发环境 第 3 页 共 30 页 操作系统:Microsoft Windows XP 程序语言:Java 2 开 发 包:Java(TM) 2 Standard Edition (5.0) Sun Micro. J2ME Wireless Tool Kit 2.2 IDE:Eclipse 3.01 2.2 J2ME的概念 J2ME的全称是Java2 Micro Edition (J2ME)——Java2技术微型版,与J2SE、J2EE一样都是有美国SUN微系统公司提出的JAVA技术规范。 2.3 J2ME简介 J2ME是为了能够开发运行在小型设备、独立设备、互联移动设备、嵌入式设备上的JAVA应用程序而被提出的。J2ME是建立在一个由概要描述、配置、JAVA虚拟机和操作系统等部分组成的标准架构之上的,这些内容共同组成了完整的J2ME实时运行环境。它的技术核心是由一个JAVA虚拟机( JVM )及一套适合运行在上述设备环境上的API接口构成。 J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算设备的开发人员,这些开发人员需要在他们的产品中整合跨平台的能力。 无线设备和小型计算设备的消费者期望这些设备能够有较高的性能。他们希望小型计算设备有快速的响应时间,与同种设备相兼容,拥有功能完备的应用程序。消费者希望桌面计算机和笔记本电脑上的软件和功能同样能够运行在移动电话和个人数字助理上。 为了满足他们的需求,开发人员必须重新考虑他们设计计算机系统的方式。开发人员需要利用商业计算机上现有的前端和后端软件的计算能力,并将这些能力传递到微型、移动和无线的计算设备上。J2ME能够以最小的修改来实现这种传递,如果应用程序的设计是可伸缩的,应用程序就可以适应小型计算设备上有限的资源。 J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案,能很好的解决软件跨平台的兼容性和安全性的问题。 Java技术在无线应用方面的优势非常明显: 第 4 页 共 30 页 1. 应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。 2. Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI); 3. Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。 基于以上分析,Java手机将是未来手机的发展方向,是业界的热点。 J2ME架构 2.3.1 J2ME架构的模块化设计使应用程序可以灵活适应小型计算设备的限制。J2ME架构没有替代小型计算设备的操作系统。相反,J2ME架构由位于原生操作系统之上的多层软件组成,这些软件共同称为“连接有限设备配置”(Connected Limited Device Configuration, CLDC)。安装在操作系统之上的CLDC形成了小型计算设备的运行时环境。 J2ME架构由3个软件层组成:第一层是包括在内的配置层,这个层次直接与原生操作系统进行交互。配置层还处理profile和JVM之间的交互。第二层是profile层,由小型计算设备的应用程序编程接口(API)的最小集合组成。第三层是Mobile Information Device Profile( MIDP )层。MIDP层由用户网络连接、永久存储和用户界面的java API组成。它还能够访问CLDC库和MIDP库。 2.3.2 JVM ( 虚拟机 ) JVM是专门为微型电子设备与资源受限设备如:手机、寻呼机、移动互联网设备、家用微电子设备等设计的一种轻便、紧凑的JAVA虚拟机。 JVM可以为微型电子设备提供一个完整的JAVA运行环境,除了一些微型设备所必需的适当的功能有所不同外,它是由JAVA虚拟机规范定义的真实的JAVA虚拟机。它是专门为那些受资源限制,只有几百K字节内存的微型设备设计的。 JVM起初是由SUN微系统实验室为一个名叫“Spotless”的项目创建的。它的目标是为资源受限制的Palm(是目前较为流行的掌上电脑操作系统)可连接的电子设备,实现一个java虚拟机。 第 5 页 共 30 页 基于上述原因,JVM具有以下几个特点: (1)小,仅具有40KB至80KB的静态内存。 (2)轻便、精巧。 (3)模块化并可定制。 (4)尽可能完全紧凑的完成设计目的。 2.3.3 MIDP( 移动信息设备简表 ) MIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。它同时也包括一个供用户下载新应用到终端设备的标准运行环境。运行在MIDP下的小应用程序叫做MIDlet移动设备小应用程序,它与Applet类似。MIDP要求平台设备提供一个机制用来存储简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。 MIDP是以SUN、Motorola、Nokia为中心的MIDPEG组织(Mobile Information Profile Expert Group)所制订出来使用在CLDC上的Profile,是以能使用在移动电话、双向对讲机、可无线通信的PDA(个人数字助理)上面为前提设计出来的。另外,像日本国内的NTT DoCoMo、J-PHONE、KDDI等电信商与移动电话制造商也都曾参与了MIDPEG。 MIDP是在CLDC 的功能上附加提供适合目标设备用的GUI与事件处理功能。这样一来,就可以当成MIDP应用程序(MIDlet)来运行了。 MIDP由于是由多个企业所共同出来的开放标准,因此主要的移动电话制造商也会制造出大量的对应机种。也就是说,以MIDP为基准所制作出来的应用程序,也将可以在流通于市面上的移动电话上执行。 另外,MIDP不仅限于移动电话,也已经被移植到PDA Palm OS上,而以MIDP for Palm OS的名字来称呼(与KJava是不同的)。在不使用各电信商的扩展API的时候,制作给移动电话用的MIDlet也将可以使用在Palm OS上面。由于未来MIDP也将会搭载到不同设备之上,也由于其兼容性高,只要写过一次程序,就可以在其他移动电话或是移动电话以外的设备上执行;而这也就是它最大的好处。 2.4 Java Appication Manager 第 6 页 共 30 页 手机中负责调配程序运行资源的管理后台是Java Application Manager。它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。Java Application Manager 会从网络上下载代表该Application Suite 的JAR 档,接着在手机上安裝此MIDlet Suite,然后在手机开始执行该应用程序。整个详细的运作流程如图2-1所示。 网站 使用者手机 1(浏览网页 HTML网页 手机 2.浏览描述档 内建浏览器 描述档 4.选择应用程序 3.浏览图示 6(安装应 图示档 用程序 Java 5.下载图示和JAR档 Appication 存储 Manager JAR档 媒体 7.启动 8(载入并执行 应用程序 Java Servlet KVM 网络 图 2-1 JAM工作流程图 3 需求分析、程序结构和相关技术 3.1 本程序需解决的有关技术问题 1.随着人们对一定阅读的需求增大,我们急需一款能满足人们日常阅读手机软件,既然阅读器面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习使用技巧。保持程序操作的简易是最基本的要求。阅读 第 7 页 共 30 页 器最基本的功能包括:载入图书、前进、后退、存档、读取书签,更换背景。 2.用户运行阅读器时需要有书签记录的功能。这就需要进行适当的设计。记录书签的存储方式也需要有较好的解决方案。手机中由于处理器和内存空间、存储空间都十分有限,其数据库系统与普通PC大相径庭。其数据库结构较为简单,被称之为RMS系统。 3.手机应用程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。 4.为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,在MIDP2.0中提供了用于增强游戏功能的game包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。 5.程序的结束、开始、动态信息画面作为构成一个完美程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图也需要有一定的考虑。 6.Java是基于虚拟机的半解释型编译系统,其执行效率较C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器(Obfuscator)进行程序打包后的优化。 以上相关技术细节和整体流程将分别在以下小节阐述。 3.2 程序流程 MIDlet suite是MIDP应用程序的最小单位,JAM负责将手机内的MIDlet suite以图形化的方式呈现,让用户能够选取欲执行的MIDlet suite,一旦选取了某个MIDlet suite,操作系统就会激活KVM执行里面的MIDlet。MIDlet及相关的支持类组成了MIDP应用程序的实际内容。 第 8 页 共 30 页 每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。在MIDP规格中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其 呼叫MIDlet 的构造函数 停止状态 StartApp() DestroyApp() (Paused) 运行状态 消减状态 PauseApp() (Active) (Destroyed) DestroyApp() 图 3-1 MIDlet的流程 中的一个状态。 这三种状态的转换关系如上图所示: MIDlet的三个状态,pause、active和destroyed.在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。 本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单,在开始运行后将先从外部文件载入背景图片文件,对背景的所有物体进行绘图。 第 9 页 共 30 页 Logo 画面 About 选项画面 开始 主程序 初始化参数 死亡时 屏幕绘图 显示 符合结束条件时 GameOver 显示阅读进度 显示历史书签 表 图 3-2 本程序的主流程图 3.3 Canvas类 为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是Canvas抽象类进行绘图。从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。 3.4 Graphics类 Graphics类提供了简单的2D绘图功能。它具有24位深度色彩的绘制能力,以三原色分别各占一个字节表示其颜色。程序只能在paint()函数中使用Graphics绘制,GameCanvas可调用getGraphics()函数直接绘制在缓冲区上,可以在任何时间请求传输到前台。其对象会被传给Canvas的paint() 第 10 页 共 30 页 函数,以便最终显示。 3.5 MIDP1.0技术下的绘制背景技术 在没有MIDP2.0前,进行游戏绘图一般需要手动编程使用双缓冲。需要在paint()方法内将所想要画的图形画在一张预先准备好的背景上,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。Image类提供了一个建立背景的静态方法createImage(int width, int height),再利用getGraphics()方法取得属于这个背景的Graphics对象,所进行的绘图操作都会作用在背景上,等到全部的绘图操作完成后,再调用drawImage()方法将背景的数据复制到实际显示的屏幕上。 这样的技术在绘制动画时特别有用。绘制动画时经常需要不断地更新画面,而更新画面的操作就是先将屏幕以fillRect()的方式清除,再将下一张图片画在屏幕上,然而反复的清除及重绘会造成屏幕的闪烁现象(flicker),因此使用双重缓冲的好处就是在背景进行这个清除及重绘的操作,再将完成的绘图拷贝到屏幕上,由于用户看不到清除的操作,因此就不会出现闪烁的现象了。不过在某些MIDP的实现上已经加上了双重缓冲的支持,因此在处理前应先利用Canvas类的isDoubleBuffer()方法来判断。 3.6 MIDP2.0新增的GameCanvas包 J2ME的流行促进几个运营商和制造商开发了一些支持游戏的类,但是,这却造成了游戏缺乏可移植性的问题,例如,很难将使用Siemens的Sprite类的游戏移植到Nokia上。 在MIDP2.0版本发布后,这些游戏移植性问题初步得到了解决。MIDP2.0新加入了 GameCanvas、Sprite、Layer、LayerManager、TiledLayer五个与游戏开发相关的类。其中 Layer类一般不会直接用到。 Game类的出现不仅降低了错误出现的几率,也使游戏代码变的更小,因为开发者不需要自己编写象Sprite这种例子。下面将简要介绍Game类。 GameCanvas类继承自Canvas,所以具有Canvas所具有的功能,还额外增加了一些便于游戏设计的功能。比如: GameCanvas类直接提供了getKeyStates(),使程序员可以在同一个线程自己侦测按键的状态。 第 11 页 共 30 页 GameCanvas类提供了flushGraphics()的功能,实现了双缓冲技术。 所谓的Sprite,就是画面上独立移动的图形。 Sprite类是继承自Layer的用于存储多桢的基本可视元素。不同的frame可交相显示,构成动态的效果。图片可翻转、颠倒、由一个主角图片就可以方便的得到所有方向的显示状态,相比原先只能使用Canvas绘图,需要将所有方向的主角图象都绘制在png图象中简化了许多。Sprite也可以从整合的图象中读图,读图时将把大图分解为若干等宽等高的小图。每个小图按照其排列顺序有相应的序号,在程序中调用其序号,就可以绘制出相应的图片。 LayerManager提供控制整体画面层的控制。它包括了一系列自动获取了代号和位置的层,简化了各层加入游戏画面的过程,提供了自动排序和绘制的能力。 LayerManager存储了一个层的列表,新的层可以用函数附加、删除和插入。层的序号相当于坐标的Z轴,0层表示最接近用户视觉,层数越高,离用户越远。层号总是连续的,即使有中间的层被移除,其他层的序号会作相应的调整以保持整体的完整性。LM中的View Window控制着与LM相对坐标的可视区域。改变View Window的位置可以制造出滚动屏幕的效果。 TiledLayer是有一组图象格元素组成的整块虚拟图象。该类使不需要高分辨率的图象就能创建大幅图面成为可能。这项技术通常应用在2D游戏平台的滚动背景的绘图。一块整图可被分割成等大小的图象格,每块格有其对应的序号,按照行列递增。多块小格可由大块同时替换组合而模拟动态的背景,这不需要逐块替换所有的静态图象格而显得非常方便。 .7 PNG图片格式 3 PNG(Portable Network Graphics)格式是MIDlet唯一支持的图象格式,PNG具体格式由PNG Specification,Version 1.0定义的。PNG格式提供透明背景的图象,这对绘制游戏画面和阅读效果极有帮助。 PNG格式图片中包含许多定义其图片特性的冗余部分(Chunks)。这些代码包含在每一个单独的png格式图象中,然而如果将多个png图象合并 第 12 页 共 30 页 在一张幅面稍大一些的整图中,多个chunks就可以得到精简,图片的大小可以得到控制。使用Image类中的createImage函数可从整图中分割出所需要的元素。在Game包中的TiledLayer和Sprite类都整合了这样的功能。本程序中的地图元素都集成在一张beijing.png图片中,实现了方便的管理和程序体积的精简。 3.8内存的优化 手机内存空间小,所以在程序设计时应该注意以下几点,以尽量减少内存的使用: (1)尽量缩短命名的长度。在应用程序内,对于所建立的类、接口、方法及变量名而言,都需要赋予一个识别的名称,所命名的名称每多一个字符就会在类文件内多产生一个字节,对于一个较复杂的应用程序而言就会增加为数不小的数据量。所有这些可以借助混淆器来帮助实现 (2)所有代码写为一个类。 (3)只使用一个线程。 (4)尽量不使用静态变量。 (5)将PNG图片合并成一张,减少图形数据的大小。 将PNG格式的小分辨率图象合并在一张大的高分辨率图象中,由于减少了头文件的大小,将比合并前的总大小减少许多。 3.9 内存检测器 Wireless Tool Kit提供了许多在运行时监视运行状态的工具。 包括内存状况的检测(手机上的内存空间十分有限,必须时刻关注机载内存是否大于程序所能使用到的最大可能的内存空间),网络状况的检测,运行函数的跟踪等。 内存检测器是内存跟踪测试随时间变化的调试器。其中,允许强制垃圾回收(Garbage Collection)。由于Java语言中,不像许多其他的如C++语言,不需要指定回收函数中特定不使用的资源,资源回收机制将自动清空无效变量占用的空间。在程序运行中也可以调用System类的gc()函数手动收回废弃的内存。 3.10 关于混淆器 Java 语言并没有完全编译成二进制可执行文件,编译出的.class文件是 第 13 页 共 30 页 一种介于源程序和二进制之间的一中基于半解释的字节码,需要虚拟机来执行。它包括了所有的信息。然而这样会导致.class很容易被反编译为源代码,从而不能保护作者的知识成果。目前流行的如decode,JAD等反编译工具可以以很快的速度生成源文件。如果不加以施行有效的措施,将造成严重的后果。 由此引入混淆器的概念。混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,如果缺乏相应的函数名指示和程序注释,即使被反编译,也将难以阅读。 混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的减少变量、函数的命名长度的关系,编译后也会从.class文件中减少这些冗余的信息。混淆后,体积大约能减少25%,这对当前费用较贵的无线网络传输是有一定意义的。 4 程序分析和具体实现 4.1 手机阅读器读取文本 由于J2ME不可以对手机中的文件进行读写,所以在开发本程序时,只能在程序打包时把文本文件作为资源文件加入到J2ME发布程序中。如果想读写手机上的文件,则要使用各手机商家提供的特定开发平台和专用的类来开发,下面就文本阅读器的关键技术进行说明。 在J2ME中如何读取文本文件的内容,在本系统中写了一个函数用来 第 14 页 共 30 页 读取指定的文本文件,文本文件做为参数传给该函数,该函数的返回值为字符串类型,将文件的内容做为一个完整的字符串返回。在读取文件内容时用到的主要技术,使用InputStream类定义一个输入字节流对象in,使用 ByteArrayOutputStream类定义一个内存数组输出字节流对象s,通过输入对象的in.read()方法来读取一个字节,将读出的字节通过s.write( )方法加入到s中,再使用s.toString()方法将内存转为字符串返回。读取文本文件的函数定义如下: private String myReadLine (String testFileName) { //函数头定义了函数的参数为文件名组成的字符串,返回值为一个字符串。 InputStream in = this.getClass().getResourceAsStream(testFileName); //由文件名参数来定义一个输入流对象变量in ByteArrayOutputStream s; s = new ByteArrayOutputStream(); //产生内存数组输出字节流对象变量S try{ int ch=0; ch=in.read(); //由输入流对象变量in的read方法以字节为单位来读取文件的内容,读取到文件尾时的值为-1。 while ( ch!= -1 ) { //如果未读到文件尾把读取的内容写入S变量中,并读取下一字节内容 s.write( ch ); ch=in.read(); } in.close(); //关闭输入流对象。 } catch (IOException ioe){ System.out.println(ioe.toString()); } String str = s.toString(); //将S变量转为字符串 第 15 页 共 30 页 try{ s.close(); //关闭输出流对象 } catch (IOException ioe){ System.out.println(ioe.toString()); } 返回文件中的内容字符串 return str.trim(); // } 4.2 系统设计 4.2.1 基本概念 本文利用J2ME技术开发了一个文本阅读器,实现了手机对文本文件的显示,给出了该程序的实现代码,并对其关键技术进行了详细阐述。 4.2.2 软件设计任务 ?J2ME文本阅读器中的文本格式。 ?读取文本文件的主要技术实现。 ?将文本文件内容显示出来的技术实现。 ?阅读器中的菜单设计技术实现。 4.2.3 总体设计 J2ME文本阅读器中的文本格式 J2ME中文本文件的格式,为了便于程序的开发和在运行中的读写处理,对要处理的文本文件要进行一定格式的整理。本程序中的文本要求用纯文本即可,每章为一个独立的文件,每一章中均可为多段,在文本中加入的空格和各种符号都可在阅读时如实的显示出来。文件写好后将其存入相应项目文件夹下的res文件夹中,如本文中的阅读器的项目名为test,则可将文本文件存入test\res文件夹下。本系统要阅读三章内容,所以制作了三个文本文件,分别命名为test1.txt、test2.txt、test3.txt,将三个文件存入test\res文件夹中,到此文本内容准备完成。 文本读取文件的主要技术 在J2ME中如何读取文本文件的内容,在本系统中写了一个函数用来读取指定的文本文件,文本文件做为参数传给该函数,该函数的返回值为 第 16 页 共 30 页 字符串类型,将文件的内容做为一个完整的字符串返回。在读取文件内容时用到的主要技术,使用InputStream类定义一个输入字节流对象in,使用 ByteArrayOutputStream类定义一个内存数组输出字节流对象s,通过输入对象的in.read()方法来读取一个字节,将读出的字节通过s.write( )方法加入到s中,再使用s.toString()方法将内存转为字符串返回。读取文本文件的函数定义如下: private String myReadLine (String testFileName) { //函数头定义了函数的参数为文件名组成的字符串,返回值为一个字符串。 InputStream in = this.getClass().getResourceAsStream(testFileName); //由文件名参数来定义一个输入流对象变量in ByteArrayOutputStream s; s = new ByteArrayOutputStream(); //产生内存数组输出字节流对象变量S try{ int ch=0; ch=in.read(); //由输入流对象变量in的read方法以字节为单位来读取文件的内容,读取到文件尾时的值为-1。 while ( ch!= -1 ) { //如果未读到文件尾把读取的内容写入S变量中,并读取下一字节内容 s.write( ch ); ch=in.read(); } in.close(); //关闭输入流对象。 } catch (IOException ioe){ System.out.println(ioe.toString()); } String str = s.toString(); //将S变量转为字符串 try{ 第 17 页 共 30 页 s.close(); //关闭输出流对象 } catch (IOException ioe){ System.out.println(ioe.toString()); } return str.trim(); //返回文件中的内容字符串 } 将文本文件内容显示出来的技术 通过Form类定义一个表单对象f,通过对象的f.append()的方法将读 取文本文件返回的字符串内容加入到表单对象中,为了该表单内容在阅读完之后可以返回上一级显示界面,通过f.addCommand()方法在表单中加入一个按钮对象,并通过f.setCommandListener(this)方法注册CommandListener高级事件处理,这样当选择按钮时即可调用CommandListener 高级事件接口类中的commandAction()函数,在该函数中判断是哪个按钮被选中,通过该函数中的代码来决定处理流程。最后通过Display类的Display.setCurrent()方法将含有文件内容的表单显示在手机屏幕上。处理代码如下: Form f=new Form("超级阅读"); //创建一个Form对象f strContent=myReadLine ("/test1.txt"); //读取test1.txt文件中的内容返回字符串 f.append(strContent); //将文本文件的内容加入到f对象中 f.addCommand(exitCom); //将退出按钮选项加入到f对象中 f.setCommandListener(this); //注册高级事件处理 display.setCurrent(f); //将f对象显示到手机屏幕上 阅读器中的菜单设计技术 本阅读器菜单结构分两级,一级菜单显示各章的标题,通过选择某一标题选项进入该章进行内容阅读,在章内容界面中设置二级菜单选项,二级菜单中只有一个选项即是返回选项,选中该选项后,则回到上一级,可重新选择章标题,进入新一章内容进行阅读。一级菜单通过List类来建立,首先产生一个List类的对象l,通过l.append("第一章",null)方法在l对象中 第 18 页 共 30 页 加入一条选项,用同样的方法可加入多条选项,只要将第一章改为第二章、第三章等,可产生一个有多选项的l对象,通过l.addCommand(exitCommand) 方法在l对象中加入一个按钮,作为退出按钮选项,通过 l.setCommandListener(this)注册高级事件处理机制,通过该高级事件的注册在操作过程中选中某一选项时,系统自动调用commandAction()函数,并将选中的选项做为参数传递给该函数,在函数中判断选中的是哪一个选项,进行不同的流程处理。最后通过Display类的Display.setCurrent(l)方法将第一级菜单界面显示在手机屏幕上。一级菜单界面的定义如下: List l=new List("超级阅读--小说",Choice.IMPLICIT); //定义一个List对象l l.addCommand(exitCommand); //在对象l中加入退出按钮 l.append("第一章",null); //加入第一章选项标题 l.append("第二章",null); //加入第二章选项标题 l.append("第三章",null); //加入第三章选项标题 l.setCommandListener(this); //注册高级事件处理机制 display.setCurrent(l); //将界面显示在手机屏幕上 在阅读器的菜单设计中,无论是选择了章标题选项,还是选择了一级菜单中的退出或者是阅读章内容界面中的退出选项,都将进入commandAction()函数中,在该函数中进行相应判断进入不同的处理流程代码。 主要程序代码如下: public void commandAction(Command c,Displayable s) { if(c==exitCommand) {//如果是一级菜单的退出按钮选项则退出本系统 notifyDestroyed(); } else if (c==exitCom) {//若是阅读章内容中的退出按钮选项则退出阅读内容界面返回一级菜单界面 startApp(); 第 19 页 共 30 页 resumeRequest(); } else {//如果选择的不是任何一个退出按钮,则进行选择章标题的判断 String strContent; List tmp=(List)s; //将参数s进行类型转换,转换为List类对象 switch(tmp.getSelectedIndex()) //判断选中的是哪一章标题则进行该章内容阅读界面 { case 0: //第一章选中打开test1.txt Form f=new Form("超级阅读"); strContent=myReadLine ("/test1.txt"); f.append(strContent); f.addCommand(exitCom); f.setCommandListener(this); display.setCurrent(f); break; case 1: //第二章选中打开test2.txt方法同第一章(略) case 2: //第三章选中打开test3.txt,如果还有更多章可按此方法再增加 } // switch 多分支结构语句结束 } //if 选择结构结束 } // commandAction函数结束 第 20 页 共 30 页 5 手机游戏开发过程中的困难 5.1 手机软件开发存在的困难 处理器、内存和色彩深度提供了游戏开发所需的因素。开发者正努力把其它游戏平台上的质量标准运用到这个平台上。当然了,一些问题仍然存在,然而这些问题终将被解决,就像PC平台游戏开发者使用不断改进的DirectX一样。 当然在手机游戏投放市场和开发以及具体的制作过程方面还是存在的诸多的问题的。 5.1.1 移动开发存在的问题 第一、花费更多的时间用来设计。开发者都有想用最简捷经济的方式做事的倾向。然而,为了创作一个世界第一流水平的软件,你就必须使用世界第一流水平的开发过程。关键步骤是设计思路、试制、生产和产品质量检测。然而,因为设备和移动运营商的多样性,开发者不得不花费更多 第 21 页 共 30 页 的时间用于前期的计划。这就存在这一种风险,那就是一个设计可以用于一种设备,但是可能就不能用在另一种设备。 第二、像在PC中一样,为硬件的"最小公分母"( lowest common denominator )开发,这意味着你的代码不能对硬件和操作系统以及程序设计语言之间的交互抱过高幻想。 第三、类似于硬件中的问题,开发两个API之间的基本功能。比较软件开发环境和围绕它们的不足进行针对性设计。开发者必须花费更多的时间了解这两个平台,但是最后的效果是很值得的。 5.1.2 操作环境不兼容性问题 本论文讲述的移动开发环境是J2ME,J2ME是获得美国大部分移动运营商支持的移动应用开发平台。J2ME是一个解释语言,运行在有虚拟机的任何操作系统上,通常运行速度很慢,而且在优化代码上有许多的困难。 在过渡期间,为这个环境开发游戏成为一种挑战。例如,BREW 1.0支持掩盖的位图传送( Masked-Blit ),而J2ME MIDP 1.4不支持。而且,一些J2ME手机不支持声音。所以你的代码不应该使用掩盖的位图传送支持或者声音支持。比如说,如果你创建自定义位图字体,你可能认为你需要掩盖的位图传送。然而,你可以使用提前修正背景色来创建字体位图。这两个平台可以在载入一个文件的时候改变调色板,允许动态的调整字体背景色,但是文本必须出现在固定的背景上。 5.1.3 不同的屏幕尺寸问题 图形是软件的一个关键的方面,描画速度是一个重要的程序函数。不同于控制台游戏和PC游戏,移动设备没有标准的屏幕尺寸或者长宽比,这就导致了很多兼容性问题。开发者可以通过编写非常灵活的背景和前景描画程序来解决这个问题。关键是创建一个允许快速扩展或者缩小游戏视窗的架构,并且不使图像变形或者生成让人看上去觉得别扭的屏幕比例。 当然,你有很多方法来处理这个问题,最坏的情况就是你可以为每种手机的显示屏重新设计图形。或者,你还可以动态地调节你的游戏背景和其它图形。 5.2 解决方案 第 22 页 共 30 页 基于上述所提到的种种困难,在手机开发过程中就要有针对性的提出解决方案。在操作系统不兼容性的问题上我们可以在别的开发环境中使用面向对象的语言,这样就很能支持J2ME,因为它是一种面向对象的语言。在J2ME和其他开发环境中,任何使用JAVA写的代码都可以使用C++编写,并且可以更快更好。把所有的设备输出代码( 声音、显示、输入 )从游戏程序逻辑中分离出来。结构化游戏程序逻辑以便能够在J2ME和其他环境之间移植。 在处理不同屏幕尺寸的问题上,使用像DrawRectangle和DrawCircle这样的固有描画函数创建尽可能多的可伸缩的图形。设计游戏,让位图图形可以伸展或者缩小15,,20,,而不会影响玩游戏。在可卷轴的游戏中,根据需要扩大或者缩小可玩的区域。这样以来这个问题便迎刃而解了。 这样以来,只要在这些关键过程中解决好这些问题就不难做出一款高质量的手机软件了。 6 总结与展望 6.1 J2ME手机游戏的优势 在手机游戏制作完成之后,其最大的优势就在于:让品质决定一切。很多人提到手机游戏都认为它前景诱人,并且通常都会有这样的想法:中国的手机用户接近2亿,如果这个市场上有10%的用户使用高端产品和服务,如果他们每人每月下载一个游戏,每个游戏收费5元,那么一年的手机市场就能轻松超过12亿元。确实,手机游戏拥有如此广泛的用户群,的确让其具有强势优势,并且一个更重要的优势在于,手机游戏将大大带动女性对于游戏的积极性,让女性朋友更容易接触游戏,更容易体会游戏带来的乐趣。 但是手机游戏的发展却并不十分明朗,大多数厂商用户仍在观望。其间WAP游戏本应掀起手机游戏的热潮,但却被技术问题限制了发展,因为大多数手机游戏玩家都只是“孤军奋战”,很难找到一起玩的人。在当前网络游戏和互动游戏大行其道的情况下,手机游戏如果还局限于一部手机肯 第 23 页 共 30 页 定无法有什么大的作为,只有大力推行互动式的手机游戏才能让其真正成熟起来。所以等到3G手机时代,在更加先进的技术支持下,互动游戏得以很轻松的实现,届时真正的手机游戏时代也许就会来临。 全球移动游戏业2002年的收益已经达到4.364亿美元,预计2008年将上升至93.4亿美元。手机游戏市场越来越被看好,成为游戏业新的增长点。目前的手机游戏都是就地取材于电脑游戏,一些比较受玩家欢迎的游戏直接移植到手机上面,节约了不少成本和周转时间。世嘉、育碧这样的大型游戏厂商已相继成立手机游戏开发部门,而诺基亚、摩托罗拉等手机厂商也大力投资手机游戏及其运行平台的开发。特别是手机游戏的开发相对于电脑游戏来说,具有开发预算少、开发周期短等特点,并且针对屏幕小、键盘等不适宜游戏使用的情况,目前游戏厂商都推出了针对手机游戏的专门机型,由此我们可以看出手机的产业链已经渐渐形成,整个行业也渐渐成熟起来。 但是手机游戏要进入黄金时期,却必然要先费一番周折。首先就是彩屏手机的普及问题,让所有的手机用户都具有先进的技术平台支持就需要长时间的等待。而且真正意义上先进的游戏手机还没有出现,同时还受到来自GBA等专业游戏机的“排挤”。另一个重要的考验是移动通信网络的稳定性和综合服务能力。手机游戏如果形成玩家互动形式的在线游戏,那么在运行时就会占用过多的通信网络资源,必然使得现有的网络不堪重负。然而,如果从行业发展的角度看,手机游戏的未来一定是在线游戏。 从上面所讲到的手机游戏具有的优势,我想手机游戏必将在以后的通信舞台上有它的用武之地的,因为随着人们生活水平的提高,手机将会逐渐成为人们生活中不可缺少的物品之一。J2ME的前景会非常广泛,并且不会只局限于游戏,还将在移动应用软件等各方面发挥重要的作用,随着科技的发展,J2ME的应用限制也将大大的得到扩展。 6.2 J2ME手机软件的开发意义 我们对于电脑软件已经熟知,所以如果以这个标准来衡量手机游戏,那么手机在某种程度上可以看作是小型的计算机,它的处理能力与台式电脑的标准处理能力相比虽然很有限,但是已经能够运行一些小型的游戏。 第 24 页 共 30 页 现在全世界手机用户很多,甚至已经超过电脑的普及率,并且手机更新换代的速度绝不比电脑差多少。所以手机游戏已经具有了它成长的基础,这个基础要比当年的电脑游戏稳固得多。 最早的手机软件只能看作是一种增值服务,并不具备形成一种产业的规模。这也是一般手机用户对于手机游戏的印象,所以很多人在买手机时,并不是很看重手机的游戏功能。例如:诺基亚手机的贪吃蛇就是在手机出厂前固化在芯片中,而且用户不能再自己安装新的游戏,所以手机游戏被看成某款手机的特殊功能也就不足为奇了。[8] 虽然手机用户很多,但是目前大多数用户还在使用单色手机,这也成为手机游戏推广的最大难题。也就是说,等用户开始真正认识手机游戏的魅力,还需要很长一段时间。但是市场是不会等待的,我们现在经常看到各种手机短信游戏的广告,那就是当前比较流行的手机游戏形式――这种短信游戏是以一部手机向另一部手机发送简短的文字信息形式进行,通常的玩法是发送一条信息到某个号码,这个号码对应游戏供应商的服务器,接收这条消息,执行一些操作然后返回一条带有结果的消息到游戏者的手机中。由于它依靠用户输入文字,因此本质上它是一个命令环境,需要大量的时间来操作和等待,并且花费不菲,有些像早期的文字网络游戏。但这种游戏最多只是一种过渡而已,不是我们真正值得讨论的游戏形式。 短信之后的手机软件会是什么样,其实手机软件肯定会走上电脑游戏的发展之路,而且以现在游戏开发基础和用户平台的更新速度,估计手机游戏的发展速度将会是电脑游戏的几倍以上。如今的彩信和已成熟运营2年多的GPRS,即将到来的3G时代给手机游戏带来更大的发展空间,而且手机游戏的开发也将应用于各种新技术之上,让用户更容易拥有手机游戏带来的乐趣。 无线应用协议( WAP )手机已经成为目前手机市场的主流,基于WAP的游戏本质上是一个静态浏览载体,非常像一个简化的Web,是为移动电话小型特征和低带宽而专门优化的。要玩WAP游戏的话,要进入游戏供应商的URL( 通常通过移 动运营商门户网站的一个链接 ),下载并浏览一个或多个页面,选择一个菜单或者输入文字,提交数据到服务器,然后浏览 第 25 页 共 30 页 更多的页面。WAP( 1.x )版本使用独特的标记语言WML,允许用户下载多个页面,即卡片组。新版本的WAP( 2.x )使用XHTML的一个子集,一次传递一个页面并且允许更好地控制显示格式。两种版本的WAP都提供一个比SMS更友好的界面,而且更加便宜,只要根据使用时间付费,而不是根据信息数付费。但是它是一个静态的浏览载体,手机本身几乎不需要做任何处理过程,并且所有游戏必须通过网络,所有的操作都是在远程服务器上执行的。 WAP手机游戏已经无法满足玩家的需求,现在已经有上千万的Java手机到了消费者手中。虽然这个“爪哇”与台式机中的Java相比还有很大的限制,但是它已经极大地提高了移动电话支持游戏的能力。 J2ME是一种针对移动电话和PDA这样的小型设备的Java语言,它比SMS或WAP能更好地控制界面,允许使用图形动画,可以通过无线网络连接到远程服务器。J2ME不是手机上配置的惟一的解释语言,但是它是一个许多厂商新支持的行业标准。也正是Java将手机游戏的趣味性大大提高,并且向传统的电子游戏靠拢,让手机游戏的吸引力增强,特别是手机随身携带的特点,也让其成为用户身边触手可及的掌中游戏,而不一定要拥有电脑这样的平台才能进行游戏。 J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案。它也使设备制造商、服务提供商及应用开发人员为他们的用户发布新的软件应用成为可能。J2ME的出现使这些厂商有了共同遵循的技术规范,而这样做也完全符合Java“一处编译,到处运行”的基本方针,因为现在市场对软件跨平台的兼容性和安全性的要求变得日益强烈。而J2ME却能很好地解决软件跨平台得兼容性与安全性的问题。 无线软件编程现在是一个非常热门的话题,这不但是因为它具有极强的趣味性,并且它给人们带来了无限商机,大家都知道现在搞互联网游戏的公司都是业绩斐然。近年来,随着Java手机的诞生,其无可替代的灵活性与轻便性致使Java手机游戏成为游戏市场的又一亮点[9]。 所以一切的一切都要从头开始,一步一个脚印地向前发展。在肯定手机游戏的前提下,共同期待一个新游戏时代的创立~ 第 26 页 共 30 页 参 考 文 献 [1] 金春霞。白秋产(基于J2M E技术手机游戏开发与实现(北京:中国青年出版社,2002( [2] 林邦杰(Java程序设计入门教程(北京:中国青年出版社,2001( [3] Michael Morrison(J2ME手机游戏编程入门(北京:人民邮电出版社,2005 ( [4] 黄聪明(JAVA移动通信程序设计J2ME MIDP(北京:清华大学出版社,2001( [5] 卢军(J2ME应用程序开发手机(北京:中国铁道出版社,2002( [6] 丁月华,刘 佳,杨 沛(J2ME 手机游戏开发平台的设计与实现(北京:清华大学出版社,2003( [7] 李振鹏 龚剑 J2ME手机游戏开发技术详解.北京:清华大学出版社,2006 [8] 洪维恩(Java 2面向对象程序设计(北京:中国铁道出版社,2002( [9] 焦祝军,张威(J2ME无线通信技术应用开发(北京:希望电子出版社,2003( [10] 付国成(基于J2ME的手机2D动作类游戏引擎的设计与实现(北京交通大学,2007( [11] 施铮(J2ME无线移动游戏开发(北京:人民邮电出版社,2006( [12] 李振鹏(J2ME手机游戏开发技术详解(北京:清华大学出版社,2006( [13] 朗锐(J2ME手机程序Eclipse 开发基础(北京:机械工业出版社,2006( 第 27 页 共 30 页 [14] 王森。Java手机/PDA程序设计入门.北京:电子工业出版社.2005( [15] Luo Siwen(Research and Implementation of Mobile Payment Based on J2ME(Communications Design Conference,Oct 2,2003( [16] Ma Chang-jie, Fang Jin-yun(Programming Keynotes on J2ME-basedMobile Map Services(Department of Electrical and Computer Engineering Bradley University, Peoria, Illinois 6162,, USA. 致 谢 这款手机软件作为我的毕业设计,是本人目前做过的最有意义的程序,这期间对J2ME的学习,使我重新整理了一遍自己所学知识的体系结构。 本科期间做过很多课程设计,大多规模很小。在数据库、各种应用软件和游戏中,我仍觉得对应用软件的设计有极大的热情。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。实训期间做过俄罗斯方块的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。大家作品的最终结果都离不开同一个模式。正式商业的软件的人性化界面和各个游戏间迥异的结构每每会让人有去开发的冲动。 学习J2ME的困难远远超出了想象,在设计初期,为了设计程序的菜单,由于经验不足,花费了数天的时间。很多相关的技术,如需要使用到的线程、Game包的新功能、高级、低级图形界面的使用、贴图等,每一项都需要花一定的时间去掌握和熟悉。更为困难的是,J2ME为一种刚出现仅几年的新技术,国内的参考资料非常少,仅有的几本也停留在简单的介绍阶段。台湾的王森写了本较好的书,给了我很大的帮助,但对设计该游戏来说,仍只够入门。此外,互联网上不少无私的学者分享了大量的经验,非常值得借鉴。 本文研究工作从选题到完成,无不倾注了导师***教授诲人不倦的关怀、指导和教诲。导师们渊博的学识、严谨的治学态度、敏锐的科学洞察力、高尚的道德情操、实事求是的学术作风以及为人师表的风范给了我巨大的启迪、鼓舞和鞭策,并将成为我人生道路上的楷模。值此论文完成之 第 28 页 共 30 页 际,谨向导师表示我崇高的敬意和衷心的感谢,并诚挚地祝愿导师工作顺利,身体安康,阖家幸福~ 在本人大学实训期间,同时得到了***老师的支持和帮助,在此对他们表示衷心的感谢。此外,本文研究工作还得到了中北大学软件学院通信技术专业***的热情帮助,在此向他们表示真诚的谢意。 同时,尤其感谢多年来一直给予我鼎力支持和无私奉献的父母以及默默支持。没有他们的付出与牺牲,我的课题研究就谈不上顺利完成,再次真心地感谢和祝福他们~ 最后,谨向所有在我大学学习期间曾经关心和帮助过本人的老师和同学表示最诚挚的谢意~ 第 29 页 共 30 页
/
本文档为【手机网络版小说阅读器设计与开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索