版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 手機(jī)網(wǎng)絡(luò)版小說(shuō)閱讀器設(shè)計(jì)與開(kāi)發(fā)</p><p><b> 摘要</b></p><p> 近年來(lái),隨著信息技術(shù)的飛速發(fā)展,移動(dòng)通訊與互聯(lián)網(wǎng)的融合日趨明顯,作為電子商務(wù)領(lǐng)域的新生力量——移動(dòng)商務(wù),開(kāi)始成為傳統(tǒng)電子商務(wù)的有益補(bǔ)充,顯示出巨大的發(fā)展?jié)摿统砷L(zhǎng)空間。移動(dòng)商務(wù)以其靈活、簡(jiǎn)單、方便的特點(diǎn)正受到越來(lái)越多人的關(guān)注,人們迫切希望能夠享受到移動(dòng)商
2、務(wù)帶來(lái)的便利。 國(guó)內(nèi)外越來(lái)越多的廠商在Sun公司、摩托羅拉、西門(mén)子等公司的技術(shù)支持下開(kāi)始開(kāi)發(fā)基于J2ME平臺(tái)的無(wú)線應(yīng)用服務(wù)。J2ME 是SUN 公司針對(duì)嵌入式、消費(fèi)類電子產(chǎn)品推出的開(kāi)發(fā)平臺(tái),與J2SE 和J2EE 共同組成Java 技術(shù)的三個(gè)重要的分支。J2ME 實(shí)際上是一系列規(guī)范的集合,由JCP 組織制定相關(guān)的Java Specification Request(JSR)并發(fā)布,各個(gè)廠商會(huì)按照規(guī)范在自己的產(chǎn)品上進(jìn)行實(shí)現(xiàn),但是必須要通過(guò)
3、TCK 測(cè)試,這樣確保兼容性 。J2ME平臺(tái)由于自身的特點(diǎn),己經(jīng)成為當(dāng)前業(yè)界流行的無(wú)線應(yīng)用開(kāi)發(fā)支柱平臺(tái)。利用J2ME提供的功能,電子商務(wù)、企業(yè)的商務(wù)應(yīng)用等都可以擴(kuò)展到無(wú)線上來(lái),基于J2ME平臺(tái)的手機(jī)應(yīng)用開(kāi)發(fā)已經(jīng)成為熱點(diǎn)。本文首先分析了J2ME在當(dāng)前移動(dòng)終端發(fā)展中所具有的重要角色,選擇J2 ME作為移動(dòng)終端</p><p> 關(guān)鍵詞: 移動(dòng)設(shè)備,J2ME,MIDP,閱讀器</p><p>
4、 Mobile STAND-ALONE NOVEL DESIGN AND DEVELOPMENT OF READER</p><p><b> Abstract</b></p><p> In recent years, along with the information technology rapid development, Mobile communi
5、cation 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, demonstr
6、ated 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 pe</p><p> T
7、he 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
8、39;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 thedevelop
9、ment of mobile terminal, the advantage of choosing J2ME as the </p><p> Keyword: Mobile equipment, J2ME, MIDP, Reader</p><p><b> 目 錄</b></p><p><b> 1 引言3</
10、b></p><p> 1.1 課題背景3</p><p> 1.2 研究目的3</p><p> 1.3 論文組織結(jié)構(gòu)3</p><p> 2 J2ME技術(shù)概覽3</p><p> 2.1 開(kāi)發(fā)環(huán)境3</p><p> 2.2 J2ME的概念3</p>
11、;<p> 2.3 J2ME簡(jiǎn)介3</p><p> 2.3.1 J2ME架構(gòu)3</p><p> 2.3.2 JVM ( 虛擬機(jī) )3</p><p> 2.3.3 MIDP( 移動(dòng)信息設(shè)備簡(jiǎn)表 )3</p><p> 2.4 Java Appication Manager3</p><
12、;p> 3.1 本程序需解決的有關(guān)技術(shù)問(wèn)題3</p><p> 3.2 程序流程3</p><p> 3.3 Canvas類3</p><p> 3.4 Graphics類3</p><p> 3.5 MIDP1.0技術(shù)下的繪制背景技術(shù)3</p><p> 3.6 MIDP2.0新增的G
13、ameCanvas包3</p><p> 3.7 PNG圖片格式3</p><p> 3.8內(nèi)存的優(yōu)化3</p><p> 3.9 內(nèi)存檢測(cè)器3</p><p> 3.10 關(guān)于混淆器3</p><p> 4 程序分析和具體實(shí)現(xiàn)3</p><p> 4.1 手機(jī)閱讀器讀
14、取文本3</p><p> 4.2 系統(tǒng)設(shè)計(jì)3</p><p> 4.2.1 基本概念3</p><p> 4.2.2 軟件設(shè)計(jì)任務(wù)3</p><p> 4.2.3 總體設(shè)計(jì)3</p><p> 5手機(jī)游戲開(kāi)發(fā)過(guò)程中的困難3</p><p> 5.1 手機(jī)軟件開(kāi)發(fā)存在的困
15、難3</p><p> 5.1.1 移動(dòng)開(kāi)發(fā)存在的問(wèn)題3</p><p> 5.1.2 操作環(huán)境不兼容性問(wèn)題3</p><p> 5.1.3 不同的屏幕尺寸問(wèn)題3</p><p> 5.2 解決方案3</p><p><b> 6 總結(jié)與展望3</b></p>
16、<p> 6.1 J2ME手機(jī)游戲的優(yōu)勢(shì)3</p><p> 6.2 J2ME手機(jī)軟件的開(kāi)發(fā)意義3</p><p><b> 參 考 文 獻(xiàn)3</b></p><p><b> 致 謝3</b></p><p><b> 1 引言</b></p
17、><p><b> 1.1 課題背景</b></p><p> 手機(jī)是人們?nèi)粘I钪兴玫姆浅nl繁的通信工具,雖然現(xiàn)在其費(fèi)用比有線電話高,但是其隨時(shí)隨地的溝通優(yōu)勢(shì),使人們擺脫了線路的束縛。手機(jī)及其他無(wú)線設(shè)備越來(lái)越多的走進(jìn)普通百姓的工作和生活,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他無(wú)線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。目前幾乎人手一部或幾部手機(jī),正是由于手機(jī)的高普及率,使得無(wú)線移動(dòng)商務(wù)
18、才得以迅速普及和發(fā)展。</p><p> 隨著通訊技術(shù)的發(fā)展及手機(jī)的普及 ,人們正在不斷地給手機(jī)增加新的功能 ,其中 ,使手機(jī)實(shí)現(xiàn)一般只有 PC機(jī)才具有的功能——下載各種程序并運(yùn)行 ,是目前手機(jī)發(fā)展的一個(gè)重要方向。為此 ,人們提出了各種各樣的解決方案 ,其中基于 JAVA的 J2ME方案無(wú)疑是最引人注目的。</p><p> JAVA技術(shù)已經(jīng)從一種最初用來(lái)編寫(xiě)與硬件無(wú)關(guān)的嵌入式系統(tǒng)的編
19、程語(yǔ)言變成了一種與廠商無(wú)關(guān)、與硬件無(wú)關(guān)的健壯的服務(wù)器端技術(shù),它使整個(gè)企業(yè)界可以全面發(fā)掘以Web為核心的應(yīng)用程序的巨大潛力。隨著JAVA技術(shù)的不斷更新提高,J2ME技術(shù)的出現(xiàn),使得手機(jī)游戲越來(lái)越成為我們關(guān)注的焦點(diǎn)。J2ME技術(shù)目前最流行的就是在制作手機(jī)游戲方面,JAVA手機(jī)的出現(xiàn)使得這一技術(shù)更有它的用武之地,發(fā)揮著他靈活、輕便、快捷的作用。近幾年,由于微處理器性能的大幅提升,加上無(wú)線通訊技術(shù)的突破,手持式移動(dòng)設(shè)備開(kāi)始受到大眾的青睞。短短幾
20、年內(nèi),手機(jī)已經(jīng)升級(jí)了幾代產(chǎn)品,普及率逐年攀升,生產(chǎn)效率不斷上升,產(chǎn)品價(jià)格比個(gè)人電腦的摩爾定律有更驚人的下調(diào),以至手機(jī)是大多是城市居民不可缺少的一件隨身設(shè)備。繼短信、彩信等服務(wù)之后,中國(guó)移動(dòng)提供基于Java的百寶箱業(yè)務(wù),應(yīng)用產(chǎn)品遍及商務(wù)應(yīng)用、信息獲取、英漢互譯、游戲娛樂(lè)等多媒體領(lǐng)域。根據(jù)官方公布的統(tǒng)計(jì)數(shù)據(jù),我國(guó)移動(dòng)電話用戶已突破3億。依托這樣的市場(chǎng),一旦無(wú)線Java應(yīng)用大規(guī)模開(kāi)展起來(lái),將會(huì)創(chuàng)造出比短信業(yè)務(wù)更為驚人的利潤(rùn)。Java語(yǔ)言原先的
21、開(kāi)發(fā)目的與市場(chǎng)的需求不謀而合,并且也已經(jīng)成為手機(jī)應(yīng)用程序開(kāi)發(fā)</p><p><b> 1.2 研究目的</b></p><p> 隨著人們對(duì)快節(jié)奏的學(xué)習(xí)充電的重視,對(duì)移動(dòng)閱讀的需求也相應(yīng)增大,為了滿足人們移動(dòng)閱讀的愿望,因此我們急需J2ME開(kāi)發(fā)一款能滿足人們?nèi)粘i喿x得簡(jiǎn)潔方便的手機(jī)軟件。既然閱讀器面向的是普通消費(fèi)者而不是計(jì)算機(jī)專家,那么他們不可能深入的學(xué)習(xí)使用技
22、巧。保持程序操作的簡(jiǎn)易是最基本的要求。閱讀器最基本的功能包括:載入圖書(shū)、前進(jìn)、后退、存檔、讀取書(shū)簽,更換背景。并且閱讀器還可以閱讀網(wǎng)絡(luò)上的資源,實(shí)現(xiàn)資源利用的最大化。此外,該程序可下載到手機(jī)上,隨時(shí)隨地的進(jìn)行閱讀,這樣就可以通過(guò)這種方式開(kāi)發(fā)一些學(xué)習(xí)軟件,使手機(jī)用戶可有一個(gè)隨身學(xué)習(xí)的工具書(shū)。</p><p> 1.3 論文組織結(jié)構(gòu)</p><p> 本篇論文共分為七個(gè)部分:包括引言,J2
23、ME技術(shù)概覽,需求分析、程序結(jié)構(gòu)和相關(guān)技術(shù),程序分析和具體實(shí)現(xiàn),困難總結(jié),前景展望和結(jié)論,參考文獻(xiàn)及致謝。其中第四部分“程序分析和具體實(shí)現(xiàn)”是本篇論文的重點(diǎn)。整篇論文都是圍繞著這一部分來(lái)展開(kāi)論述的,在這一部分里詳細(xì)介紹網(wǎng)絡(luò)版手機(jī)閱讀器的開(kāi)發(fā)全過(guò)程和開(kāi)發(fā)過(guò)程中存在的疑難問(wèn)題。其中包括:手機(jī)閱讀器如何讀取文本,J2ME文本閱讀器中的文本格式,讀取文本文件的主要技術(shù)實(shí)現(xiàn),將文本文件內(nèi)容顯示出來(lái)的技術(shù)實(shí)現(xiàn),閱讀器中的菜單設(shè)計(jì)技術(shù)實(shí)現(xiàn)。</
24、p><p> 通過(guò)對(duì)J2ME的詳細(xì)介紹我們可以從中了解到其自身的作用,近年來(lái),隨著JAVA手機(jī)的誕生,其無(wú)可替代的靈活性與輕便性致使JAVA手機(jī)游戲成為游戲市場(chǎng)的又一亮點(diǎn),它的前景無(wú)可限量,必將在我們以后的生活中發(fā)揮著重要的作用。</p><p> 2 J2ME技術(shù)概覽</p><p><b> 2.1 開(kāi)發(fā)環(huán)境</b></p>
25、<p> 操作系統(tǒng):Microsoft Windows XP</p><p> 程序語(yǔ)言:Java 2</p><p> 開(kāi) 發(fā) 包:Java(TM) 2 Standard Edition (5.0) Sun Micro. J2ME Wireless Tool Kit 2.2</p><p> IDE:Eclipse 3.01</p
26、><p> 2.2 J2ME的概念</p><p> J2ME的全稱是Java2 Micro Edition (J2ME)——Java2技術(shù)微型版,與J2SE、J2EE一樣都是有美國(guó)SUN微系統(tǒng)公司提出的JAVA技術(shù)規(guī)范。</p><p> 2.3 J2ME簡(jiǎn)介</p><p> J2ME是為了能夠開(kāi)發(fā)運(yùn)行在小型設(shè)備、獨(dú)立設(shè)備、互聯(lián)移動(dòng)設(shè)
27、備、嵌入式設(shè)備上的JAVA應(yīng)用程序而被提出的。J2ME是建立在一個(gè)由概要描述、配置、JAVA虛擬機(jī)和操作系統(tǒng)等部分組成的標(biāo)準(zhǔn)架構(gòu)之上的,這些內(nèi)容共同組成了完整的J2ME實(shí)時(shí)運(yùn)行環(huán)境。它的技術(shù)核心是由一個(gè)JAVA虛擬機(jī)( JVM )及一套適合運(yùn)行在上述設(shè)備環(huán)境上的API接口構(gòu)成。</p><p> J2ME在1999年的JavaOne開(kāi)發(fā)人員大會(huì)上初次亮相,它的目標(biāo)是面向智能無(wú)線設(shè)備和小型計(jì)算設(shè)備的開(kāi)發(fā)人員,這些
28、開(kāi)發(fā)人員需要在他們的產(chǎn)品中整合跨平臺(tái)的能力。</p><p> 無(wú)線設(shè)備和小型計(jì)算設(shè)備的消費(fèi)者期望這些設(shè)備能夠有較高的性能。他們希望小型計(jì)算設(shè)備有快速的響應(yīng)時(shí)間,與同種設(shè)備相兼容,擁有功能完備的應(yīng)用程序。消費(fèi)者希望桌面計(jì)算機(jī)和筆記本電腦上的軟件和功能同樣能夠運(yùn)行在移動(dòng)電話和個(gè)人數(shù)字助理上。</p><p> 為了滿足他們的需求,開(kāi)發(fā)人員必須重新考慮他們?cè)O(shè)計(jì)計(jì)算機(jī)系統(tǒng)的方式。開(kāi)發(fā)人員需要
29、利用商業(yè)計(jì)算機(jī)上現(xiàn)有的前端和后端軟件的計(jì)算能力,并將這些能力傳遞到微型、移動(dòng)和無(wú)線的計(jì)算設(shè)備上。J2ME能夠以最小的修改來(lái)實(shí)現(xiàn)這種傳遞,如果應(yīng)用程序的設(shè)計(jì)是可伸縮的,應(yīng)用程序就可以適應(yīng)小型計(jì)算設(shè)備上有限的資源。</p><p> J2ME為在小型電子設(shè)備上創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案,能很好的解決軟件跨平臺(tái)的兼容性和安全性的問(wèn)題。</p><p> Java技術(shù)在無(wú)線
30、應(yīng)用方面的優(yōu)勢(shì)非常明顯:</p><p> 1. 應(yīng)用程序可按需下載,而不是購(gòu)買(mǎi)由硬件商提供的套件,可升級(jí)空間大。</p><p> 2. Java技術(shù)提供了一個(gè)類庫(kù),它使的應(yīng)用開(kāi)發(fā)商可以創(chuàng)建更為直覺(jué)、豐富的用戶界面(GUI);</p><p> 3. Java技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,并在本地運(yùn)行,僅僅是在連接到服務(wù)器
31、時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。</p><p> 基于以上分析,Java手機(jī)將是未來(lái)手機(jī)的發(fā)展方向,是業(yè)界的熱點(diǎn)。</p><p> 2.3.1 J2ME架構(gòu)</p><p> J2ME架構(gòu)的模塊化設(shè)計(jì)使應(yīng)用程序可以靈活適應(yīng)小型計(jì)算設(shè)備的限制。J2ME架構(gòu)沒(méi)有替代小型計(jì)算設(shè)備的操作系統(tǒng)。相反,J2ME架構(gòu)由位于原生操作系統(tǒng)之上的多層軟件組成,這些軟件共同稱為“連接有限設(shè)
32、備配置”(Connected Limited Device Configuration, CLDC)。安裝在操作系統(tǒng)之上的CLDC形成了小型計(jì)算設(shè)備的運(yùn)行時(shí)環(huán)境。</p><p> J2ME架構(gòu)由3個(gè)軟件層組成:第一層是包括在內(nèi)的配置層,這個(gè)層次直接與原生操作系統(tǒng)進(jìn)行交互。配置層還處理profile和JVM之間的交互。第二層是profile層,由小型計(jì)算設(shè)備的應(yīng)用程序編程接口(API)的最小集合組成。第三層是M
33、obile Information Device Profile( MIDP )層。MIDP層由用戶網(wǎng)絡(luò)連接、永久存儲(chǔ)和用戶界面的java API組成。它還能夠訪問(wèn)CLDC庫(kù)和MIDP庫(kù)。</p><p> 2.3.2 JVM ( 虛擬機(jī) )</p><p> JVM是專門(mén)為微型電子設(shè)備與資源受限設(shè)備如:手機(jī)、尋呼機(jī)、移動(dòng)互聯(lián)網(wǎng)設(shè)備、家用微電子設(shè)備等設(shè)計(jì)的一種輕便、緊湊的JAVA虛擬機(jī)
34、。</p><p> JVM可以為微型電子設(shè)備提供一個(gè)完整的JAVA運(yùn)行環(huán)境,除了一些微型設(shè)備所必需的適當(dāng)?shù)墓δ苡兴煌?,它是由JAVA虛擬機(jī)規(guī)范定義的真實(shí)的JAVA虛擬機(jī)。它是專門(mén)為那些受資源限制,只有幾百K字節(jié)內(nèi)存的微型設(shè)備設(shè)計(jì)的。</p><p> JVM起初是由SUN微系統(tǒng)實(shí)驗(yàn)室為一個(gè)名叫“Spotless”的項(xiàng)目創(chuàng)建的。它的目標(biāo)是為資源受限制的Palm(是目前較為流行的掌上
35、電腦操作系統(tǒng))可連接的電子設(shè)備,實(shí)現(xiàn)一個(gè)java虛擬機(jī)。</p><p> 基于上述原因,JVM具有以下幾個(gè)特點(diǎn):</p><p> ?。?)小,僅具有40KB至80KB的靜態(tài)內(nèi)存。</p><p><b> ?。?)輕便、精巧。</b></p><p> ?。?)模塊化并可定制。</p><p&g
36、t; ?。?)盡可能完全緊湊的完成設(shè)計(jì)目的。</p><p> 2.3.3 MIDP( 移動(dòng)信息設(shè)備簡(jiǎn)表 )</p><p> MIDP是專門(mén)為互聯(lián)受限設(shè)備配置設(shè)計(jì)的,它為移動(dòng)設(shè)備提供了一套API集合,MIDP包含用戶界面類、持久存儲(chǔ)功能與網(wǎng)絡(luò)功能。它同時(shí)也包括一個(gè)供用戶下載新應(yīng)用到終端設(shè)備的標(biāo)準(zhǔn)運(yùn)行環(huán)境。運(yùn)行在MIDP下的小應(yīng)用程序叫做MIDlet移動(dòng)設(shè)備小應(yīng)用程序,它與Applet
37、類似。MIDP要求平臺(tái)設(shè)備提供一個(gè)機(jī)制用來(lái)存儲(chǔ)簡(jiǎn)單的數(shù)據(jù)記錄,通過(guò)正常的平臺(tái)事件,比如重新啟動(dòng)和電池更新維護(hù)系統(tǒng)的完整性。</p><p> MIDP是以SUN、Motorola、Nokia為中心的MIDPEG組織(Mobile Information Profile Expert Group)所制訂出來(lái)使用在CLDC上的Profile,是以能使用在移動(dòng)電話、雙向?qū)χv機(jī)、可無(wú)線通信的PDA(個(gè)人數(shù)字助理)上面為
38、前提設(shè)計(jì)出來(lái)的。另外,像日本國(guó)內(nèi)的NTT DoCoMo、J-PHONE、KDDI等電信商與移動(dòng)電話制造商也都曾參與了MIDPEG。</p><p> MIDP是在CLDC的功能上附加提供適合目標(biāo)設(shè)備用的GUI與事件處理功能。這樣一來(lái),就可以當(dāng)成MIDP應(yīng)用程序(MIDlet)來(lái)運(yùn)行了。</p><p> MIDP由于是由多個(gè)企業(yè)所共同策劃出來(lái)的開(kāi)放標(biāo)準(zhǔn),因此主要的移動(dòng)電話制造商也會(huì)制
39、造出大量的對(duì)應(yīng)機(jī)種。也就是說(shuō),以MIDP為基準(zhǔn)所制作出來(lái)的應(yīng)用程序,也將可以在流通于市面上的移動(dòng)電話上執(zhí)行。</p><p> 另外,MIDP不僅限于移動(dòng)電話,也已經(jīng)被移植到PDA Palm OS上,而以MIDP for Palm OS的名字來(lái)稱呼(與KJava是不同的)。在不使用各電信商的擴(kuò)展API的時(shí)候,制作給移動(dòng)電話用的MIDlet也將可以使用在Palm OS上面。由于未來(lái)MIDP也將會(huì)搭載到不同設(shè)備之上
40、,也由于其兼容性高,只要寫(xiě)過(guò)一次程序,就可以在其他移動(dòng)電話或是移動(dòng)電話以外的設(shè)備上執(zhí)行;而這也就是它最大的好處。</p><p> 2.4 Java Appication Manager</p><p> 手機(jī)中負(fù)責(zé)調(diào)配程序運(yùn)行資源的管理后臺(tái)是Java Application Manager。它所使用的傳輸媒體可以是紅外線、網(wǎng)絡(luò)、以及其他可用來(lái)傳輸?shù)拿襟w。Java Applicatio
41、n Manager 會(huì)從網(wǎng)絡(luò)上下載代表該Application Suite 的JAR 檔,接著在手機(jī)上安裝此MIDlet Suite,然后在手機(jī)開(kāi)始執(zhí)行該應(yīng)用程序。整個(gè)詳細(xì)的運(yùn)作流程如圖2-1所示。</p><p> 3 需求分析、程序結(jié)構(gòu)和相關(guān)技術(shù)</p><p> 3.1 本程序需解決的有關(guān)技術(shù)問(wèn)題</p><p> 1.隨著人們對(duì)一定閱讀的需求增大,我們
42、急需一款能滿足人們?nèi)粘i喿x手機(jī)軟件,既然閱讀器面向的是普通消費(fèi)者而不是計(jì)算機(jī)專家,那么他們不可能深入的學(xué)習(xí)使用技巧。保持程序操作的簡(jiǎn)易是最基本的要求。閱讀器最基本的功能包括:載入圖書(shū)、前進(jìn)、后退、存檔、讀取書(shū)簽,更換背景。</p><p> 2.用戶運(yùn)行閱讀器時(shí)需要有書(shū)簽記錄的功能。這就需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。記錄書(shū)簽的存儲(chǔ)方式也需要有較好的解決方案。手機(jī)中由于處理器和內(nèi)存空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)系統(tǒng)與普
43、通PC大相徑庭。其數(shù)據(jù)庫(kù)結(jié)構(gòu)較為簡(jiǎn)單,被稱之為RMS系統(tǒng)。</p><p> 3.手機(jī)應(yīng)用程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品,每秒都會(huì)運(yùn)行成千上萬(wàn)行程序,繪圖事件、鍵盤(pán)事件都會(huì)以極高的頻率在后臺(tái)等待響應(yīng),若有絲毫的差別都將很容易導(dǎo)致程序在運(yùn)行不久后可能出現(xiàn)嚴(yán)重錯(cuò)誤,甚至死循環(huán)。因此,其邏輯設(shè)計(jì)應(yīng)當(dāng)相當(dāng)嚴(yán)謹(jǐn),需將所有可能發(fā)生的事件及意外情況考慮在設(shè)計(jì)中。</p&g
44、t;<p> 4.為了美觀,適用性強(qiáng),可能需要采用外部文件引入的圖片貼圖,有關(guān)貼圖,在MIDP2.0中提供了用于增強(qiáng)游戲功能的game包,使得解決靜態(tài)或動(dòng)態(tài)、畫(huà)面背景、屏幕刷新的雙緩沖等都有較好的解決方案。</p><p> 5.程序的結(jié)束、開(kāi)始、動(dòng)態(tài)信息畫(huà)面作為構(gòu)成一個(gè)完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。</p>
45、<p> 6.Java是基于虛擬機(jī)的半解釋型編譯系統(tǒng),其執(zhí)行效率較C++等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開(kāi)發(fā)過(guò)程中對(duì)結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(Obfuscator)進(jìn)行程序打包后的優(yōu)化。</p><p> 以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。</p><p><b>
46、 3.2 程序流程</b></p><p> MIDlet suite是MIDP應(yīng)用程序的最小單位,JAM負(fù)責(zé)將手機(jī)內(nèi)的MIDlet suite以圖形化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的MIDlet suite,一旦選取了某個(gè)MIDlet suite,操作系統(tǒng)就會(huì)激活KVM執(zhí)行里面的MIDlet。MIDlet及相關(guān)的支持類組成了MIDP應(yīng)用程序的實(shí)際內(nèi)容。</p><p>
47、 每個(gè)MIDlet都必須繼承javax.microedition.midlet.MIDlet這個(gè)抽象類。在MIDP規(guī)格中定義了MIDlet的生命周期,以及可以存在的三種狀態(tài),包括Paused、Active以及Destroyed,每一個(gè)MIDlet在任何時(shí)刻只可能處于其中的一個(gè)狀態(tài)。</p><p> 這三種狀態(tài)的轉(zhuǎn)換關(guān)系如上圖所示:</p><p> MIDlet的三個(gè)狀態(tài),pause
48、、active和destroyed.在啟動(dòng)一個(gè)MIDlet的時(shí)候,應(yīng)用管理軟件會(huì)首先創(chuàng)建一個(gè)MIDlet實(shí)例并使得他處于pause狀態(tài),當(dāng)startApp()方法被調(diào)用的時(shí)候MIDlet進(jìn)入active狀態(tài),也就是所說(shuō)的運(yùn)行狀態(tài)。在active狀態(tài)調(diào)用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet進(jìn)入destroyed或者pause狀態(tài)。值得一提的是destroyApp
49、(boolean unconditional)方法,事實(shí)上,當(dāng)destroyApp()方法被調(diào)用的時(shí)候,AMS通知MIDlet進(jìn)入destroyed狀態(tài)。在destroyed狀態(tài)的MIDlet必須釋放了所有的資源,并且保存了數(shù)據(jù)。如果unconditional為false的時(shí)候,MIDlet可以在接到通知后拋出MIDletStateChangeException而保持在當(dāng)前狀態(tài),如果設(shè)置為true的話,則必須立即進(jìn)入destroyed狀
50、態(tài)。</p><p> 本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,在開(kāi)始運(yùn)行后將先從外部文件載入背景圖片文件,對(duì)背景的所有物體進(jìn)行繪圖。</p><p> 3.3 Canvas類</p><p> 為了能有程序開(kāi)發(fā)人員控制接口的外觀和行為,需要使用大量的初級(jí)用戶接口類,尤其在游戲程序中,幾乎完全依
51、賴的就是Canvas抽象類進(jìn)行繪圖。從程序開(kāi)發(fā)的觀點(diǎn)看,Canvas類可與高級(jí)Screen類交互,程序可在需要時(shí)在Canvas中摻入高級(jí)類的組件。Canvas提供了鍵盤(pán)事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤(pán)按鍵映射為游戲控制鍵的函數(shù)。鍵盤(pán)事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤(pán)布局都適合游戲的操作。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開(kāi)發(fā)商能定義他們自己的游戲鍵布局。</p>
52、<p> 3.4 Graphics類</p><p> Graphics類提供了簡(jiǎn)單的2D繪圖功能。它具有24位深度色彩的繪制能力,以三原色分別各占一個(gè)字節(jié)表示其顏色。程序只能在paint()函數(shù)中使用Graphics繪制,GameCanvas可調(diào)用getGraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時(shí)間請(qǐng)求傳輸?shù)角芭_(tái)。其對(duì)象會(huì)被傳給Canvas的paint()函數(shù),以便最終顯示。<
53、/p><p> 3.5 MIDP1.0技術(shù)下的繪制背景技術(shù)</p><p> 在沒(méi)有MIDP2.0前,進(jìn)行游戲繪圖一般需要手動(dòng)編程使用雙緩沖。需要在paint()方法內(nèi)將所想要畫(huà)的圖形畫(huà)在一張預(yù)先準(zhǔn)備好的背景上,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。Image類提供了一個(gè)建立背景的靜態(tài)方法createImage(int width, int height),再利用getG
54、raphics()方法取得屬于這個(gè)背景的Graphics對(duì)象,所進(jìn)行的繪圖操作都會(huì)作用在背景上,等到全部的繪圖操作完成后,再調(diào)用drawImage()方法將背景的數(shù)據(jù)復(fù)制到實(shí)際顯示的屏幕上。</p><p> 這樣的技術(shù)在繪制動(dòng)畫(huà)時(shí)特別有用。繪制動(dòng)畫(huà)時(shí)經(jīng)常需要不斷地更新畫(huà)面,而更新畫(huà)面的操作就是先將屏幕以fillRect()的方式清除,再將下一張圖片畫(huà)在屏幕上,然而反復(fù)的清除及重繪會(huì)造成屏幕的閃爍現(xiàn)象(flic
55、ker),因此使用雙重緩沖的好處就是在背景進(jìn)行這個(gè)清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會(huì)出現(xiàn)閃爍的現(xiàn)象了。不過(guò)在某些MIDP的實(shí)現(xiàn)上已經(jīng)加上了雙重緩沖的支持,因此在處理前應(yīng)先利用Canvas類的isDoubleBuffer()方法來(lái)判斷。</p><p> 3.6 MIDP2.0新增的GameCanvas包</p><p> J2ME的流行促
56、進(jìn)幾個(gè)運(yùn)營(yíng)商和制造商開(kāi)發(fā)了一些支持游戲的類,但是,這卻造成了游戲缺乏可移植性的問(wèn)題,例如,很難將使用Siemens的Sprite類的游戲移植到Nokia上。</p><p> 在MIDP2.0版本發(fā)布后,這些游戲移植性問(wèn)題初步得到了解決。MIDP2.0新加入了</p><p> GameCanvas、Sprite、Layer、LayerManager、TiledLayer五個(gè)與游戲開(kāi)發(fā)
57、相關(guān)的類。其中 Layer類一般不會(huì)直接用到。</p><p> Game類的出現(xiàn)不僅降低了錯(cuò)誤出現(xiàn)的幾率,也使游戲代碼變的更小,因?yàn)殚_(kāi)發(fā)者不需要自己編寫(xiě)象Sprite這種例子。下面將簡(jiǎn)要介紹Game類。</p><p> GameCanvas類繼承自Canvas,所以具有Canvas所具有的功能,還額外增加了一些便于游戲設(shè)計(jì)的功能。比如: GameCanvas類直接提供了getKey
58、States(),使程序員可以在同一個(gè)線程自己偵測(cè)按鍵的狀態(tài)。GameCanvas類提供了flushGraphics()的功能,實(shí)現(xiàn)了雙緩沖技術(shù)。</p><p> 所謂的Sprite,就是畫(huà)面上獨(dú)立移動(dòng)的圖形。</p><p> Sprite類是繼承自Layer的用于存儲(chǔ)多楨的基本可視元素。不同的frame可交相顯示,構(gòu)成動(dòng)態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒、由一個(gè)主角圖片就可以方便的得到所
59、有方向的顯示狀態(tài),相比原先只能使用Canvas繪圖,需要將所有方向的主角圖象都繪制在png圖象中簡(jiǎn)化了許多。Sprite也可以從整合的圖象中讀圖,讀圖時(shí)將把大圖分解為若干等寬等高的小圖。每個(gè)小圖按照其排列順序有相應(yīng)的序號(hào),在程序中調(diào)用其序號(hào),就可以繪制出相應(yīng)的圖片。</p><p> LayerManager提供控制整體畫(huà)面層的控制。它包括了一系列自動(dòng)獲取了代號(hào)和位置的層,簡(jiǎn)化了各層加入游戲畫(huà)面的過(guò)程,提供了自
60、動(dòng)排序和繪制的能力。</p><p> LayerManager存儲(chǔ)了一個(gè)層的列表,新的層可以用函數(shù)附加、刪除和插入。層的序號(hào)相當(dāng)于坐標(biāo)的Z軸,0層表示最接近用戶視覺(jué),層數(shù)越高,離用戶越遠(yuǎn)。層號(hào)總是連續(xù)的,即使有中間的層被移除,其他層的序號(hào)會(huì)作相應(yīng)的調(diào)整以保持整體的完整性。LM中的View Window控制著與LM相對(duì)坐標(biāo)的可視區(qū)域。改變View Window的位置可以制造出滾動(dòng)屏幕的效果。</p>
61、<p> TiledLayer是有一組圖象格元素組成的整塊虛擬圖象。該類使不需要高分辨率的圖象就能創(chuàng)建大幅圖面成為可能。這項(xiàng)技術(shù)通常應(yīng)用在2D游戲平臺(tái)的滾動(dòng)背景的繪圖。一塊整圖可被分割成等大小的圖象格,每塊格有其對(duì)應(yīng)的序號(hào),按照行列遞增。多塊小格可由大塊同時(shí)替換組合而模擬動(dòng)態(tài)的背景,這不需要逐塊替換所有的靜態(tài)圖象格而顯得非常方便。</p><p> 3.7 PNG圖片格式</p>
62、<p> PNG(Portable Network Graphics)格式是MIDlet唯一支持的圖象格式,PNG具體格式由PNG Specification,Version 1.0定義的。PNG格式提供透明背景的圖象,這對(duì)繪制游戲畫(huà)面和閱讀效果極有幫助。</p><p> PNG格式圖片中包含許多定義其圖片特性的冗余部分(Chunks)。這些代碼包含在每一個(gè)單獨(dú)的png格式圖象中,然而如果將多個(gè)p
63、ng圖象合并在一張幅面稍大一些的整圖中,多個(gè)chunks就可以得到精簡(jiǎn),圖片的大小可以得到控制。使用Image類中的createImage函數(shù)可從整圖中分割出所需要的元素。在Game包中的TiledLayer和Sprite類都整合了這樣的功能。本程序中的地圖元素都集成在一張beijing.png圖片中,實(shí)現(xiàn)了方便的管理和程序體積的精簡(jiǎn)。</p><p><b> 3.8內(nèi)存的優(yōu)化</b>&
64、lt;/p><p> 手機(jī)內(nèi)存空間小,所以在程序設(shè)計(jì)時(shí)應(yīng)該注意以下幾點(diǎn),以盡量減少內(nèi)存的使用:</p><p> (1)盡量縮短命名的長(zhǎng)度。在應(yīng)用程序內(nèi),對(duì)于所建立的類、接口、方法及變量名而言,都需要賦予一個(gè)識(shí)別的名稱,所命名的名稱每多一個(gè)字符就會(huì)在類文件內(nèi)多產(chǎn)生一個(gè)字節(jié),對(duì)于一個(gè)較復(fù)雜的應(yīng)用程序而言就會(huì)增加為數(shù)不小的數(shù)據(jù)量。所有這些可以借助混淆器來(lái)幫助實(shí)現(xiàn)</p><
65、p> (2)所有代碼寫(xiě)為一個(gè)類。</p><p> (3)只使用一個(gè)線程。</p><p> (4)盡量不使用靜態(tài)變量。</p><p> (5)將PNG圖片合并成一張,減少圖形數(shù)據(jù)的大小。</p><p> 將PNG格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了頭文件的大小,將比合并前的總大小減少許多。</
66、p><p><b> 3.9 內(nèi)存檢測(cè)器</b></p><p> Wireless Tool Kit提供了許多在運(yùn)行時(shí)監(jiān)視運(yùn)行狀態(tài)的工具。 包括內(nèi)存狀況的檢測(cè)(手機(jī)上的內(nèi)存空間十分有限,必須時(shí)刻關(guān)注機(jī)載內(nèi)存是否大于程序所能使用到的最大可能的內(nèi)存空間),網(wǎng)絡(luò)狀況的檢測(cè),運(yùn)行函數(shù)的跟蹤等。 內(nèi)存檢測(cè)器是內(nèi)存跟蹤測(cè)試隨時(shí)間變化的調(diào)試器。其中,允許強(qiáng)制垃圾回收(Garbag
67、e Collection)。由于Java語(yǔ)言中,不像許多其他的如C++語(yǔ)言,不需要指定回收函數(shù)中特定不使用的資源,資源回收機(jī)制將自動(dòng)清空無(wú)效變量占用的空間。在程序運(yùn)行中也可以調(diào)用System類的gc()函數(shù)手動(dòng)收回廢棄的內(nèi)存。</p><p> 3.10 關(guān)于混淆器</p><p> Java 語(yǔ)言并沒(méi)有完全編譯成二進(jìn)制可執(zhí)行文件,編譯出的.class文件是一種介于源程序和二進(jìn)制之間的
68、一中基于半解釋的字節(jié)碼,需要虛擬機(jī)來(lái)執(zhí)行。它包括了所有的信息。然而這樣會(huì)導(dǎo)致.class很容易被反編譯為源代碼,從而不能保護(hù)作者的知識(shí)成果。目前流行的如decode,JAD等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴(yán)重的后果。</p><p> 由此引入混淆器的概念。混淆器將代碼中的所有變量、函數(shù)、類的名稱變?yōu)楹?jiǎn)短的英文字母代號(hào),如果缺乏相應(yīng)的函數(shù)名指示和程序注釋,即使被反編譯,也
69、將難以閱讀。</p><p> 混淆器的作用不僅僅是保護(hù)代碼,它也有精簡(jiǎn)編譯后程序大小的作用。由于以上介紹的減少變量、函數(shù)的命名長(zhǎng)度的關(guān)系,編譯后也會(huì)從.class文件中減少這些冗余的信息?;煜?,體積大約能減少25%,這對(duì)當(dāng)前費(fèi)用較貴的無(wú)線網(wǎng)絡(luò)傳輸是有一定意義的。</p><p> 4 程序分析和具體實(shí)現(xiàn)</p><p> 4.1 手機(jī)閱讀器讀取文本<
70、;/p><p> 由于J2ME不可以對(duì)手機(jī)中的文件進(jìn)行讀寫(xiě),所以在開(kāi)發(fā)本程序時(shí),只能在程序打包時(shí)把文本文件作為資源文件加入到J2ME發(fā)布程序中。如果想讀寫(xiě)手機(jī)上的文件,則要使用各手機(jī)商家提供的特定開(kāi)發(fā)平臺(tái)和專用的類來(lái)開(kāi)發(fā),下面就文本閱讀器的關(guān)鍵技術(shù)進(jìn)行說(shuō)明。</p><p> 在J2ME中如何讀取文本文件的內(nèi)容,在本系統(tǒng)中寫(xiě)了一個(gè)函數(shù)用來(lái)讀取指定的文本文件,文本文件做為參數(shù)傳給該函數(shù),該函
71、數(shù)的返回值為字符串類型,將文件的內(nèi)容做為一個(gè)完整的字符串返回。在讀取文件內(nèi)容時(shí)用到的主要技術(shù),使用InputStream類定義一個(gè)輸入字節(jié)流對(duì)象in,使用 ByteArrayOutputStream類定義一個(gè)內(nèi)存數(shù)組輸出字節(jié)流對(duì)象s,通過(guò)輸入對(duì)象的in.read()方法來(lái)讀取一個(gè)字節(jié),將讀出的字節(jié)通過(guò)s.write( )方法加入到s中,再使用s.toString()方法將內(nèi)存轉(zhuǎn)為字符串返回。讀取文本文件的函數(shù)定義如下:
72、160; private String myReadLine (String testFileName) { //函數(shù)頭定義了函數(shù)的參數(shù)為文件名組成的字符串,返回值為一個(gè)字符串。 InputStream in = this.getClass().getResourceAsStream(testFileN
73、ame); //由文件名參數(shù)來(lái)定義一個(gè)輸入流對(duì)象變量in ByteArrayOutputStream s; </p><p><b> 4.2 系統(tǒng)設(shè)計(jì)</b></p><p> 4.2.1 基本概念</p>
74、;<p> 本文利用J2ME技術(shù)開(kāi)發(fā)了一個(gè)文本閱讀器,實(shí)現(xiàn)了手機(jī)對(duì)文本文件的顯示,給出了該程序的實(shí)現(xiàn)代碼,并對(duì)其關(guān)鍵技術(shù)進(jìn)行了詳細(xì)闡述。</p><p> 4.2.2 軟件設(shè)計(jì)任務(wù)</p><p> ?、貸2ME文本閱讀器中的文本格式。</p><p> ②讀取文本文件的主要技術(shù)實(shí)現(xiàn)。</p><p> ?、蹖⑽谋疚募?nèi)容
75、顯示出來(lái)的技術(shù)實(shí)現(xiàn)。</p><p> ?、荛喿x器中的菜單設(shè)計(jì)技術(shù)實(shí)現(xiàn)。</p><p> 4.2.3 總體設(shè)計(jì)</p><p> J2ME文本閱讀器中的文本格式</p><p> J2ME中文本文件的格式,為了便于程序的開(kāi)發(fā)和在運(yùn)行中的讀寫(xiě)處理,對(duì)要處理的文本文件要進(jìn)行一定格式的整理。本程序中的文本要求用純文本即可,每章為一個(gè)獨(dú)立的文
76、件,每一章中均可為多段,在文本中加入的空格和各種符號(hào)都可在閱讀時(shí)如實(shí)的顯示出來(lái)。文件寫(xiě)好后將其存入相應(yīng)項(xiàng)目文件夾下的res文件夾中,如本文中的閱讀器的項(xiàng)目名為test,則可將文本文件存入test\res文件夾下。本系統(tǒng)要閱讀三章內(nèi)容,所以制作了三個(gè)文本文件,分別命名為test1.txt、test2.txt、test3.txt,將三個(gè)文件存入test\res文件夾中,到此文本內(nèi)容準(zhǔn)備完成。</p><p> 文本
77、讀取文件的主要技術(shù)</p><p> 在J2ME中如何讀取文本文件的內(nèi)容,在本系統(tǒng)中寫(xiě)了一個(gè)函數(shù)用來(lái)讀取指定的文本文件,文本文件做為參數(shù)傳給該函數(shù),該函數(shù)的返回值為字符串類型,將文件的內(nèi)容做為一個(gè)完整的字符串返回。在讀取文件內(nèi)容時(shí)用到的主要技術(shù),使用InputStream類定義一個(gè)輸入字節(jié)流對(duì)象in,使用 ByteArrayOutputStream類定義一個(gè)內(nèi)存數(shù)組輸出字節(jié)流對(duì)象s,通過(guò)輸入對(duì)象的in
78、.read()方法來(lái)讀取一個(gè)字節(jié),將讀出的字節(jié)通過(guò)s.write( )方法加入到s中,再使用s.toString()方法將內(nèi)存轉(zhuǎn)為字符串返回。讀取文本文件的函數(shù)定義如下: private String myReadLine (String testFileName) { //函數(shù)頭定義了函數(shù)的參數(shù)為文件名組成的字
79、符串,返回值為一個(gè)字符串。 InputStream in = this.getClass().getResourceAsStream(testFileName); //由文件名參數(shù)來(lái)定義一個(gè)輸入流對(duì)象變量in ByteArrayOutputStream s; <
80、;/p><p> 將文本文件內(nèi)容顯示出來(lái)的技術(shù) 通過(guò)Form類定義一個(gè)表單對(duì)象f,通過(guò)對(duì)象的f.append()的方法將讀取文本文件返回的字符串內(nèi)容加入到表單對(duì)象中,為了該表單內(nèi)容在閱讀完之后可以返回上一級(jí)顯示界面,通過(guò)f.addCommand()方法在表單中加入一個(gè)按鈕對(duì)象,并通過(guò)f.setCommandListener(this)方法注冊(cè)CommandListener高
81、級(jí)事件處理,這樣當(dāng)選擇按鈕時(shí)即可調(diào)用CommandListener 高級(jí)事件接口類中的commandAction()函數(shù),在該函數(shù)中判斷是哪個(gè)按鈕被選中,通過(guò)該函數(shù)中的代碼來(lái)決定處理流程。最后通過(guò)Display類的Display.setCurrent()方法將含有文件內(nèi)容的表單顯示在手機(jī)屏幕上。處理代碼如下: Form f=new Form("超級(jí)閱讀"); //創(chuàng)建一個(gè)Form
82、對(duì)象f strContent=myReadLine ("/test1.txt"); //讀取test1.txt文件中的內(nèi)容返回字符串 f.append(strContent); //將文本文件的內(nèi)容加入到f對(duì)象中 f.</p><p> 閱讀器中的菜單設(shè)計(jì)技術(shù)
83、0; 本閱讀器菜單結(jié)構(gòu)分兩級(jí),一級(jí)菜單顯示各章的標(biāo)題,通過(guò)選擇某一標(biāo)題選項(xiàng)進(jìn)入該章進(jìn)行內(nèi)容閱讀,在章內(nèi)容界面中設(shè)置二級(jí)菜單選項(xiàng),二級(jí)菜單中只有一個(gè)選項(xiàng)即是返回選項(xiàng),選中該選項(xiàng)后,則回到上一級(jí),可重新選擇章標(biāo)題,進(jìn)入新一章內(nèi)容進(jìn)行閱讀。一級(jí)菜單通過(guò)List類來(lái)建立,首先產(chǎn)生一個(gè)List類的對(duì)象l,通過(guò)l.append("第一章",null)方法在l對(duì)象中加入一條選項(xiàng),用同樣的方法可加入多條選項(xiàng),只要將第一
84、章改為第二章、第三章等,可產(chǎn)生一個(gè)有多選項(xiàng)的l對(duì)象,通過(guò)l.addCommand(exitCommand)方法在l對(duì)象中加入一個(gè)按鈕,作為退出按鈕選項(xiàng),通過(guò)l.setCommandListener(this)注冊(cè)高級(jí)事件處理機(jī)制,通過(guò)該高級(jí)事件的注冊(cè)在操作過(guò)程中選中某一選項(xiàng)時(shí),系統(tǒng)自動(dòng)調(diào)用commandAction()函數(shù),并將選中的選項(xiàng)做為參數(shù)傳遞給該函數(shù),在函數(shù)中判斷選中的是哪一個(gè)選項(xiàng),進(jìn)行不同的流程處理。最后通過(guò)Display類的
85、Display.setCurrent(l)方法將第一級(jí)菜單界面顯示在手機(jī)屏幕上。一級(jí)菜單界面的定義如下:List l=new</p><p> 5 手機(jī)游戲開(kāi)發(fā)過(guò)程中的困難</p><p> 5.1 手機(jī)軟件開(kāi)發(fā)存在的困難</p><p> 處理器、內(nèi)存和色彩深度提供了游戲開(kāi)發(fā)所需的因素。開(kāi)發(fā)者正努力把其它游戲平臺(tái)上的質(zhì)量標(biāo)準(zhǔn)運(yùn)用到這個(gè)平臺(tái)上。當(dāng)然了,一些問(wèn)
86、題仍然存在,然而這些問(wèn)題終將被解決,就像PC平臺(tái)游戲開(kāi)發(fā)者使用不斷改進(jìn)的DirectX一樣。</p><p> 當(dāng)然在手機(jī)游戲投放市場(chǎng)和開(kāi)發(fā)以及具體的制作過(guò)程方面還是存在的諸多的問(wèn)題的。</p><p> 5.1.1 移動(dòng)開(kāi)發(fā)存在的問(wèn)題</p><p> 第一、花費(fèi)更多的時(shí)間用來(lái)設(shè)計(jì)。開(kāi)發(fā)者都有想用最簡(jiǎn)捷經(jīng)濟(jì)的方式做事的傾向。然而,為了創(chuàng)作一個(gè)世界第一流水平的
87、軟件,你就必須使用世界第一流水平的開(kāi)發(fā)過(guò)程。關(guān)鍵步驟是設(shè)計(jì)思路、試制、生產(chǎn)和產(chǎn)品質(zhì)量檢測(cè)。然而,因?yàn)樵O(shè)備和移動(dòng)運(yùn)營(yíng)商的多樣性,開(kāi)發(fā)者不得不花費(fèi)更多的時(shí)間用于前期的計(jì)劃。這就存在這一種風(fēng)險(xiǎn),那就是一個(gè)設(shè)計(jì)可以用于一種設(shè)備,但是可能就不能用在另一種設(shè)備。</p><p> 第二、像在PC中一樣,為硬件的"最小公分母"( lowest common denominator )開(kāi)發(fā),這意味著你的代碼
88、不能對(duì)硬件和操作系統(tǒng)以及程序設(shè)計(jì)語(yǔ)言之間的交互抱過(guò)高幻想。 </p><p> 第三、類似于硬件中的問(wèn)題,開(kāi)發(fā)兩個(gè)API之間的基本功能。比較軟件開(kāi)發(fā)環(huán)境和圍繞它們的不足進(jìn)行針對(duì)性設(shè)計(jì)。開(kāi)發(fā)者必須花費(fèi)更多的時(shí)間了解這兩個(gè)平臺(tái),但是最后的效果是很值得的。</p><p> 5.1.2 操作環(huán)境不兼容性問(wèn)題</p><p> 本論文講述的移動(dòng)開(kāi)發(fā)環(huán)境是J2ME,J2
89、ME是獲得美國(guó)大部分移動(dòng)運(yùn)營(yíng)商支持的移動(dòng)應(yīng)用開(kāi)發(fā)平臺(tái)。J2ME是一個(gè)解釋語(yǔ)言,運(yùn)行在有虛擬機(jī)的任何操作系統(tǒng)上,通常運(yùn)行速度很慢,而且在優(yōu)化代碼上有許多的困難。</p><p> 在過(guò)渡期間,為這個(gè)環(huán)境開(kāi)發(fā)游戲成為一種挑戰(zhàn)。例如,BREW 1.0支持掩蓋的位圖傳送( Masked-Blit ),而J2ME MIDP 1.4不支持。而且,一些J2ME手機(jī)不支持聲音。所以你的代碼不應(yīng)該使用掩蓋的位圖傳送支持或者聲音支
90、持。比如說(shuō),如果你創(chuàng)建自定義位圖字體,你可能認(rèn)為你需要掩蓋的位圖傳送。然而,你可以使用提前修正背景色來(lái)創(chuàng)建字體位圖。這兩個(gè)平臺(tái)可以在載入一個(gè)文件的時(shí)候改變調(diào)色板,允許動(dòng)態(tài)的調(diào)整字體背景色,但是文本必須出現(xiàn)在固定的背景上。</p><p> 5.1.3 不同的屏幕尺寸問(wèn)題</p><p> 圖形是軟件的一個(gè)關(guān)鍵的方面,描畫(huà)速度是一個(gè)重要的程序函數(shù)。不同于控制臺(tái)游戲和PC游戲,移動(dòng)設(shè)備沒(méi)有
91、標(biāo)準(zhǔn)的屏幕尺寸或者長(zhǎng)寬比,這就導(dǎo)致了很多兼容性問(wèn)題。開(kāi)發(fā)者可以通過(guò)編寫(xiě)非常靈活的背景和前景描畫(huà)程序來(lái)解決這個(gè)問(wèn)題。關(guān)鍵是創(chuàng)建一個(gè)允許快速擴(kuò)展或者縮小游戲視窗的架構(gòu),并且不使圖像變形或者生成讓人看上去覺(jué)得別扭的屏幕比例。</p><p> 當(dāng)然,你有很多方法來(lái)處理這個(gè)問(wèn)題,最壞的情況就是你可以為每種手機(jī)的顯示屏重新設(shè)計(jì)圖形?;蛘?,你還可以動(dòng)態(tài)地調(diào)節(jié)你的游戲背景和其它圖形。</p><p>
92、<b> 5.2 解決方案</b></p><p> 基于上述所提到的種種困難,在手機(jī)開(kāi)發(fā)過(guò)程中就要有針對(duì)性的提出解決方案。在操作系統(tǒng)不兼容性的問(wèn)題上我們可以在別的開(kāi)發(fā)環(huán)境中使用面向?qū)ο蟮恼Z(yǔ)言,這樣就很能支持J2ME,因?yàn)樗且环N面向?qū)ο蟮恼Z(yǔ)言。在J2ME和其他開(kāi)發(fā)環(huán)境中,任何使用JAVA寫(xiě)的代碼都可以使用C++編寫(xiě),并且可以更快更好。把所有的設(shè)備輸出代碼( 聲音、顯示、輸入 )從游戲程
93、序邏輯中分離出來(lái)。結(jié)構(gòu)化游戲程序邏輯以便能夠在J2ME和其他環(huán)境之間移植。</p><p> 在處理不同屏幕尺寸的問(wèn)題上,使用像DrawRectangle和DrawCircle這樣的固有描畫(huà)函數(shù)創(chuàng)建盡可能多的可伸縮的圖形。設(shè)計(jì)游戲,讓位圖圖形可以伸展或者縮小15%-20%,而不會(huì)影響玩游戲。在可卷軸的游戲中,根據(jù)需要擴(kuò)大或者縮小可玩的區(qū)域。這樣以來(lái)這個(gè)問(wèn)題便迎刃而解了。</p><p>
94、 這樣以來(lái),只要在這些關(guān)鍵過(guò)程中解決好這些問(wèn)題就不難做出一款高質(zhì)量的手機(jī)軟件了。</p><p><b> 6 總結(jié)與展望</b></p><p> 6.1 J2ME手機(jī)游戲的優(yōu)勢(shì)</p><p> 在手機(jī)游戲制作完成之后,其最大的優(yōu)勢(shì)就在于:讓品質(zhì)決定一切。很多人提到手機(jī)游戲都認(rèn)為它前景誘人,并且通常都會(huì)有這樣的想法:中國(guó)的手機(jī)用戶接
95、近2億,如果這個(gè)市場(chǎng)上有10%的用戶使用高端產(chǎn)品和服務(wù),如果他們每人每月下載一個(gè)游戲,每個(gè)游戲收費(fèi)5元,那么一年的手機(jī)市場(chǎng)就能輕松超過(guò)12億元。確實(shí),手機(jī)游戲擁有如此廣泛的用戶群,的確讓其具有強(qiáng)勢(shì)優(yōu)勢(shì),并且一個(gè)更重要的優(yōu)勢(shì)在于,手機(jī)游戲?qū)⒋蟠髱?dòng)女性對(duì)于游戲的積極性,讓女性朋友更容易接觸游戲,更容易體會(huì)游戲帶來(lái)的樂(lè)趣。</p><p> 但是手機(jī)游戲的發(fā)展卻并不十分明朗,大多數(shù)廠商用戶仍在觀望。其間WAP游戲本
96、應(yīng)掀起手機(jī)游戲的熱潮,但卻被技術(shù)問(wèn)題限制了發(fā)展,因?yàn)榇蠖鄶?shù)手機(jī)游戲玩家都只是“孤軍奮戰(zhàn)”,很難找到一起玩的人。在當(dāng)前網(wǎng)絡(luò)游戲和互動(dòng)游戲大行其道的情況下,手機(jī)游戲如果還局限于一部手機(jī)肯定無(wú)法有什么大的作為,只有大力推行互動(dòng)式的手機(jī)游戲才能讓其真正成熟起來(lái)。所以等到3G手機(jī)時(shí)代,在更加先進(jìn)的技術(shù)支持下,互動(dòng)游戲得以很輕松的實(shí)現(xiàn),屆時(shí)真正的手機(jī)游戲時(shí)代也許就會(huì)來(lái)臨。</p><p> 全球移動(dòng)游戲業(yè)2002年的收益已
97、經(jīng)達(dá)到4.364億美元,預(yù)計(jì)2008年將上升至93.4億美元。手機(jī)游戲市場(chǎng)越來(lái)越被看好,成為游戲業(yè)新的增長(zhǎng)點(diǎn)。目前的手機(jī)游戲都是就地取材于電腦游戲,一些比較受玩家歡迎的游戲直接移植到手機(jī)上面,節(jié)約了不少成本和周轉(zhuǎn)時(shí)間。世嘉、育碧這樣的大型游戲廠商已相繼成立手機(jī)游戲開(kāi)發(fā)部門(mén),而諾基亞、摩托羅拉等手機(jī)廠商也大力投資手機(jī)游戲及其運(yùn)行平臺(tái)的開(kāi)發(fā)。特別是手機(jī)游戲的開(kāi)發(fā)相對(duì)于電腦游戲來(lái)說(shuō),具有開(kāi)發(fā)預(yù)算少、開(kāi)發(fā)周期短等特點(diǎn),并且針對(duì)屏幕小、鍵盤(pán)等不適
98、宜游戲使用的情況,目前游戲廠商都推出了針對(duì)手機(jī)游戲的專門(mén)機(jī)型,由此我們可以看出手機(jī)的產(chǎn)業(yè)鏈已經(jīng)漸漸形成,整個(gè)行業(yè)也漸漸成熟起來(lái)。</p><p> 但是手機(jī)游戲要進(jìn)入黃金時(shí)期,卻必然要先費(fèi)一番周折。首先就是彩屏手機(jī)的普及問(wèn)題,讓所有的手機(jī)用戶都具有先進(jìn)的技術(shù)平臺(tái)支持就需要長(zhǎng)時(shí)間的等待。而且真正意義上先進(jìn)的游戲手機(jī)還沒(méi)有出現(xiàn),同時(shí)還受到來(lái)自GBA等專業(yè)游戲機(jī)的“排擠”。另一個(gè)重要的考驗(yàn)是移動(dòng)通信網(wǎng)絡(luò)的穩(wěn)定性和綜合
99、服務(wù)能力。手機(jī)游戲如果形成玩家互動(dòng)形式的在線游戲,那么在運(yùn)行時(shí)就會(huì)占用過(guò)多的通信網(wǎng)絡(luò)資源,必然使得現(xiàn)有的網(wǎng)絡(luò)不堪重負(fù)。然而,如果從行業(yè)發(fā)展的角度看,手機(jī)游戲的未來(lái)一定是在線游戲。</p><p> 從上面所講到的手機(jī)游戲具有的優(yōu)勢(shì),我想手機(jī)游戲必將在以后的通信舞臺(tái)上有它的用武之地的,因?yàn)殡S著人們生活水平的提高,手機(jī)將會(huì)逐漸成為人們生活中不可缺少的物品之一。J2ME的前景會(huì)非常廣泛,并且不會(huì)只局限于游戲,還將在移
100、動(dòng)應(yīng)用軟件等各方面發(fā)揮重要的作用,隨著科技的發(fā)展,J2ME的應(yīng)用限制也將大大的得到擴(kuò)展。</p><p> 6.2 J2ME手機(jī)軟件的開(kāi)發(fā)意義</p><p> 我們對(duì)于電腦軟件已經(jīng)熟知,所以如果以這個(gè)標(biāo)準(zhǔn)來(lái)衡量手機(jī)游戲,那么手機(jī)在某種程度上可以看作是小型的計(jì)算機(jī),它的處理能力與臺(tái)式電腦的標(biāo)準(zhǔn)處理能力相比雖然很有限,但是已經(jīng)能夠運(yùn)行一些小型的游戲。</p><p&g
101、t; 現(xiàn)在全世界手機(jī)用戶很多,甚至已經(jīng)超過(guò)電腦的普及率,并且手機(jī)更新?lián)Q代的速度絕不比電腦差多少。所以手機(jī)游戲已經(jīng)具有了它成長(zhǎng)的基礎(chǔ),這個(gè)基礎(chǔ)要比當(dāng)年的電腦游戲穩(wěn)固得多。</p><p> 最早的手機(jī)軟件只能看作是一種增值服務(wù),并不具備形成一種產(chǎn)業(yè)的規(guī)模。這也是一般手機(jī)用戶對(duì)于手機(jī)游戲的印象,所以很多人在買(mǎi)手機(jī)時(shí),并不是很看重手機(jī)的游戲功能。例如:諾基亞手機(jī)的貪吃蛇就是在手機(jī)出廠前固化在芯片中,而且用戶不能再自
102、己安裝新的游戲,所以手機(jī)游戲被看成某款手機(jī)的特殊功能也就不足為奇了。[8]</p><p> 雖然手機(jī)用戶很多,但是目前大多數(shù)用戶還在使用單色手機(jī),這也成為手機(jī)游戲推廣的最大難題。也就是說(shuō),等用戶開(kāi)始真正認(rèn)識(shí)手機(jī)游戲的魅力,還需要很長(zhǎng)一段時(shí)間。但是市場(chǎng)是不會(huì)等待的,我們現(xiàn)在經(jīng)??吹礁鞣N手機(jī)短信游戲的廣告,那就是當(dāng)前比較流行的手機(jī)游戲形式――這種短信游戲是以一部手機(jī)向另一部手機(jī)發(fā)送簡(jiǎn)短的文字信息形式進(jìn)行,通常的玩
103、法是發(fā)送一條信息到某個(gè)號(hào)碼,這個(gè)號(hào)碼對(duì)應(yīng)游戲供應(yīng)商的服務(wù)器,接收這條消息,執(zhí)行一些操作然后返回一條帶有結(jié)果的消息到游戲者的手機(jī)中。由于它依靠用戶輸入文字,因此本質(zhì)上它是一個(gè)命令環(huán)境,需要大量的時(shí)間來(lái)操作和等待,并且花費(fèi)不菲,有些像早期的文字網(wǎng)絡(luò)游戲。但這種游戲最多只是一種過(guò)渡而已,不是我們真正值得討論的游戲形式。</p><p> 短信之后的手機(jī)軟件會(huì)是什么樣?其實(shí)手機(jī)軟件肯定會(huì)走上電腦游戲的發(fā)展之路,而且以現(xiàn)
104、在游戲開(kāi)發(fā)基礎(chǔ)和用戶平臺(tái)的更新速度,估計(jì)手機(jī)游戲的發(fā)展速度將會(huì)是電腦游戲的幾倍以上。如今的彩信和已成熟運(yùn)營(yíng)2年多的GPRS,即將到來(lái)的3G時(shí)代給手機(jī)游戲帶來(lái)更大的發(fā)展空間,而且手機(jī)游戲的開(kāi)發(fā)也將應(yīng)用于各種新技術(shù)之上,讓用戶更容易擁有手機(jī)游戲帶來(lái)的樂(lè)趣。</p><p> 無(wú)線應(yīng)用協(xié)議( WAP )手機(jī)已經(jīng)成為目前手機(jī)市場(chǎng)的主流,基于WAP的游戲本質(zhì)上是一個(gè)靜態(tài)瀏覽載體,非常像一個(gè)簡(jiǎn)化的Web,是為移動(dòng)電話小型特
105、征和低帶寬而專門(mén)優(yōu)化的。要玩WAP游戲的話,要進(jìn)入游戲供應(yīng)商的URL( 通常通過(guò)移 動(dòng)運(yùn)營(yíng)商門(mén)戶網(wǎng)站的一個(gè)鏈接 ),下載并瀏覽一個(gè)或多個(gè)頁(yè)面,選擇一個(gè)菜單或者輸入文字,提交數(shù)據(jù)到服務(wù)器,然后瀏覽更多的頁(yè)面。WAP( 1.x )版本使用獨(dú)特的標(biāo)記語(yǔ)言WML,允許用戶下載多個(gè)頁(yè)面,即卡片組。新版本的WAP( 2.x )使用XHTML的一個(gè)子集,一次傳遞一個(gè)頁(yè)面并且允許更好地控制顯示格式。兩種版本的WAP都提供一個(gè)比SMS更友好的界面,而且更
106、加便宜,只要根據(jù)使用時(shí)間付費(fèi),而不是根據(jù)信息數(shù)付費(fèi)。但是它是一個(gè)靜態(tài)的瀏覽載體,手機(jī)本身幾乎不需要做任何處理過(guò)程,并且所有游戲必須通過(guò)網(wǎng)絡(luò),所有的操作都是在遠(yuǎn)程服務(wù)器上執(zhí)行的。</p><p> WAP手機(jī)游戲已經(jīng)無(wú)法滿足玩家的需求,現(xiàn)在已經(jīng)有上千萬(wàn)的Java手機(jī)到了消費(fèi)者手中。雖然這個(gè)“爪哇”與臺(tái)式機(jī)中的Java相比還有很大的限制,但是它已經(jīng)極大地提高了移動(dòng)電話支持游戲的能力。</p><
107、p> J2ME是一種針對(duì)移動(dòng)電話和PDA這樣的小型設(shè)備的Java語(yǔ)言,它比SMS或WAP能更好地控制界面,允許使用圖形動(dòng)畫(huà),可以通過(guò)無(wú)線網(wǎng)絡(luò)連接到遠(yuǎn)程服務(wù)器。J2ME不是手機(jī)上配置的惟一的解釋語(yǔ)言,但是它是一個(gè)許多廠商新支持的行業(yè)標(biāo)準(zhǔn)。也正是Java將手機(jī)游戲的趣味性大大提高,并且向傳統(tǒng)的電子游戲靠攏,讓手機(jī)游戲的吸引力增強(qiáng),特別是手機(jī)隨身攜帶的特點(diǎn),也讓其成為用戶身邊觸手可及的掌中游戲,而不一定要擁有電腦這樣的平臺(tái)才能進(jìn)行游戲
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)---手機(jī)網(wǎng)絡(luò)版小說(shuō)閱讀器設(shè)計(jì)與開(kāi)發(fā)
- 基于android的rss閱讀器設(shè)計(jì)與開(kāi)發(fā)畢業(yè)設(shè)計(jì)
- 手機(jī)電子書(shū)閱讀器設(shè)計(jì)與開(kāi)發(fā).pdf
- 基于android手機(jī)電子閱讀器的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)
- 基于 android pdf 文檔閱讀器的設(shè)計(jì)與開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)----基于java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于java的網(wǎng)絡(luò)版坦克大戰(zhàn)游戲設(shè)計(jì)
- 嵌入式盲人閱讀器系統(tǒng)設(shè)計(jì)與開(kāi)發(fā).pdf
- 手機(jī)網(wǎng)絡(luò)游戲的研究與開(kāi)發(fā).pdf
- 基于android的圖片閱讀器的設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文
- 手機(jī)游戲開(kāi)發(fā)畢業(yè)設(shè)計(jì)
- 基于J2ME的手機(jī)網(wǎng)絡(luò)互動(dòng)游戲設(shè)計(jì)與開(kāi)發(fā).pdf
- 畢業(yè)設(shè)計(jì) ---手機(jī)聊天室設(shè)計(jì)與開(kāi)發(fā)
- 某手機(jī)網(wǎng)站設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---手機(jī)游戲(堡壘)的設(shè)計(jì)與開(kāi)發(fā)
- 基于android系統(tǒng)的文字閱讀器的設(shè)計(jì)與實(shí)現(xiàn)【開(kāi)題報(bào)告+文獻(xiàn)綜述+畢業(yè)設(shè)計(jì)】
- 盲人閱讀器的研究與開(kāi)發(fā).pdf
- 電子閱讀器的研究與開(kāi)發(fā).pdf
- UHF RFID閱讀器研究與開(kāi)發(fā).pdf
- RFID閱讀器天線分析與設(shè)計(jì).pdf
評(píng)論
0/150
提交評(píng)論