版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、手機(jī)網(wǎng)絡(luò)版小說閱讀器設(shè)計(jì)與開發(fā)摘要近年來,隨著信息技術(shù)的飛速發(fā)展,移動(dòng)通訊與互聯(lián)網(wǎng)的融合日趨明顯,作為電子商務(wù)領(lǐng)域的新生力量移動(dòng)商務(wù),開始成為傳統(tǒng)電子商務(wù)的有益補(bǔ)充,顯示出巨大的發(fā)展?jié)摿统砷L(zhǎng)空間。移動(dòng)商務(wù)以其靈活、簡(jiǎn)單、方便的特點(diǎn)正受到越來越多人的關(guān)注,人們迫切希望能夠享受到移動(dòng)商務(wù)帶來的便利。 國(guó)內(nèi)外越來越多的廠商在sun公司、摩托羅拉、西門子等公司的技術(shù)支持下開始開發(fā)基于j2me平臺(tái)的無線應(yīng)用服務(wù)。j2me 是sun 公司針對(duì)嵌入式、消費(fèi)類電子產(chǎn)品推出的開發(fā)平臺(tái),與j2se 和j2ee 共同組成java 技術(shù)的三個(gè)重要的分支。j2me 實(shí)際上是一系列規(guī)范的集合,由jcp 組織制定相關(guān)的j
2、ava specification request(jsr)并發(fā)布,各個(gè)廠商會(huì)按照規(guī)范在自己的產(chǎn)品上進(jìn)行實(shí)現(xiàn),但是必須要通過tck 測(cè)試,這樣確保兼容性 。j2me平臺(tái)由于自身的特點(diǎn),己經(jīng)成為當(dāng)前業(yè)界流行的無線應(yīng)用開發(fā)支柱平臺(tái)。利用j2me提供的功能,電子商務(wù)、企業(yè)的商務(wù)應(yīng)用等都可以擴(kuò)展到無線上來,基于j2me平臺(tái)的手機(jī)應(yīng)用開發(fā)已經(jīng)成為熱點(diǎn)。本文首先分析了j2me在當(dāng)前移動(dòng)終端發(fā)展中所具有的重要角色,選擇j2 me作為移動(dòng)終端軟件開發(fā)平臺(tái)的優(yōu)勢(shì)。實(shí)際開發(fā)了一個(gè)基于2me平臺(tái)的多媒體手機(jī)閱讀器軟件,進(jìn)行了相關(guān)理論和技術(shù)的分析。并在此基礎(chǔ)上,對(duì)w3c提出的cc/pp框架進(jìn)行了系統(tǒng)的分析,并針對(duì)這款
3、手機(jī)閱讀器進(jìn)行了改進(jìn)分析,以達(dá)到個(gè)性化服務(wù)的效果。關(guān)鍵詞: 移動(dòng)設(shè)備,j2me,midp,閱讀器mobile stand-alone novel design and development of readerabstractin 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 stren
4、gth 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 persons atten
5、tion, the people earnestly hope can enjoy the convenience which brings to the motion commerce. the domestic and foreign more and more many manufacturers in companys under and so on sun corporation, motorola, simens technical support start to develop based on the j2me platform wireless application se
6、rvice.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(
7、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 p
8、opular wireless application development prop platform.the function provides which using j2me, electronic commerce, enterprises 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
9、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 j2meplatform, and carried out relevance theory and the technology analysis. after that, carr
10、ied 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 引言31.1 課題背景31.2 研究目的31.3 論文組織結(jié)
11、構(gòu)32 j2me技術(shù)概覽32.1 開發(fā)環(huán)境32.2 j2me的概念32.3 j2me簡(jiǎn)介32.3.1 j2me架構(gòu)32.3.2 jvm ( 虛擬機(jī) )32.3.3 midp( 移動(dòng)信息設(shè)備簡(jiǎn)表 )32.4 java appication manager33.1 本程序需解決的有關(guān)技術(shù)問題33.2 程序流程33.3 canvas類33.4 graphics類33.5 midp1.0技術(shù)下的繪制背景技術(shù)33.6 midp2.0新增的gamecanvas包33.7 png圖片格式33.8內(nèi)存的優(yōu)化33.9 內(nèi)存檢測(cè)器33.10 關(guān)于混淆器34 程序分析和具體實(shí)現(xiàn)34.1 手機(jī)閱讀器讀取文本34.2
12、系統(tǒng)設(shè)計(jì)34.2.1 基本概念34.2.2 軟件設(shè)計(jì)任務(wù)34.2.3 總體設(shè)計(jì)35手機(jī)游戲開發(fā)過程中的困難35.1 手機(jī)軟件開發(fā)存在的困難35.1.1 移動(dòng)開發(fā)存在的問題35.1.2 操作環(huán)境不兼容性問題35.1.3 不同的屏幕尺寸問題35.2 解決方案36 總結(jié)與展望36.1 j2me手機(jī)游戲的優(yōu)勢(shì)36.2 j2me手機(jī)軟件的開發(fā)意義3參 考 文 獻(xiàn)3致 謝3第 ii 頁 共ii頁1 引言1.1 課題背景手機(jī)是人們?nèi)粘I钪兴玫姆浅nl繁的通信工具,雖然現(xiàn)在其費(fèi)用比有線電話高,但是其隨時(shí)隨地的溝通優(yōu)勢(shì),使人們擺脫了線路的束縛。手機(jī)及其他無線設(shè)備越來越多的走進(jìn)普通百姓的工作和生活,隨著信息網(wǎng)絡(luò)
13、化的不斷進(jìn)展,手機(jī)及其他無線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。目前幾乎人手一部或幾部手機(jī),正是由于手機(jī)的高普及率,使得無線移動(dòng)商務(wù)才得以迅速普及和發(fā)展。隨著通訊技術(shù)的發(fā)展及手機(jī)的普及 ,人們正在不斷地給手機(jī)增加新的功能 ,其中 ,使手機(jī)實(shí)現(xiàn)一般只有 pc機(jī)才具有的功能下載各種程序并運(yùn)行 ,是目前手機(jī)發(fā)展的一個(gè)重要方向。為此 ,人們提出了各種各樣的解決方案 ,其中基于 java的 j2me方案無疑是最引人注目的。java技術(shù)已經(jīng)從一種最初用來編寫與硬件無關(guān)的嵌入式系統(tǒng)的編程語言變成了一種與廠商無關(guān)、與硬件無關(guān)的健壯的服務(wù)器端技術(shù),它使整個(gè)企業(yè)界可以全面發(fā)掘以web為核心的應(yīng)用程序的巨大潛力。隨著java技術(shù)的
14、不斷更新提高,j2me技術(shù)的出現(xiàn),使得手機(jī)游戲越來越成為我們關(guān)注的焦點(diǎn)。j2me技術(shù)目前最流行的就是在制作手機(jī)游戲方面,java手機(jī)的出現(xiàn)使得這一技術(shù)更有它的用武之地,發(fā)揮著他靈活、輕便、快捷的作用。近幾年,由于微處理器性能的大幅提升,加上無線通訊技術(shù)的突破,手持式移動(dòng)設(shè)備開始受到大眾的青睞。短短幾年內(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ǐng)域。根據(jù)官方公布的統(tǒng)計(jì)
15、數(shù)據(jù),我國(guó)移動(dòng)電話用戶已突破3億。依托這樣的市場(chǎng),一旦無線java應(yīng)用大規(guī)模開展起來,將會(huì)創(chuàng)造出比短信業(yè)務(wù)更為驚人的利潤(rùn)。java語言原先的開發(fā)目的與市場(chǎng)的需求不謀而合,并且也已經(jīng)成為手機(jī)應(yīng)用程序開發(fā)的標(biāo)準(zhǔn),國(guó)際大公司如nokia、motorola及siemens等所設(shè)計(jì)的手機(jī)內(nèi)都加入java程序的支持,可見在不久的將來,java將會(huì)成為移動(dòng)設(shè)備上最熱門的語言。手機(jī)中將java語言引入,作為一種通用的開發(fā)標(biāo)準(zhǔn),并將向市場(chǎng)推廣普及僅僅短短幾年,j2me仍是一種新型的技術(shù),中文資料除臺(tái)灣出版過相關(guān)書籍外,國(guó)內(nèi)相關(guān)介紹資源很有限,國(guó)內(nèi)j2me開發(fā)商也屈指可數(shù),名聲較響的digital-red公司也僅
16、成立于1999年。本文可算是對(duì)新技術(shù)的一些嘗試,代表對(duì)無線平臺(tái)應(yīng)用程序推廣的一些努力。1.2 研究目的隨著人們對(duì)快節(jié)奏的學(xué)習(xí)充電的重視,對(duì)移動(dòng)閱讀的需求也相應(yīng)增大,為了滿足人們移動(dòng)閱讀的愿望,因此我們急需j2me開發(fā)一款能滿足人們?nèi)粘i喿x得簡(jiǎn)潔方便的手機(jī)軟件。既然閱讀器面向的是普通消費(fèi)者而不是計(jì)算機(jī)專家,那么他們不可能深入的學(xué)習(xí)使用技巧。保持程序操作的簡(jiǎn)易是最基本的要求。閱讀器最基本的功能包括:載入圖書、前進(jìn)、后退、存檔、讀取書簽,更換背景。并且閱讀器還可以閱讀網(wǎng)絡(luò)上的資源,實(shí)現(xiàn)資源利用的最大化。此外,該程序可下載到手機(jī)上,隨時(shí)隨地的進(jìn)行閱讀,這樣就可以通過這種方式開發(fā)一些學(xué)習(xí)軟件,使手機(jī)用戶
17、可有一個(gè)隨身學(xué)習(xí)的工具書。1.3 論文組織結(jié)構(gòu)本篇論文共分為七個(gè)部分:包括引言,j2me技術(shù)概覽,需求分析、程序結(jié)構(gòu)和相關(guān)技術(shù),程序分析和具體實(shí)現(xiàn),困難總結(jié),前景展望和結(jié)論,參考文獻(xiàn)及致謝。其中第四部分“程序分析和具體實(shí)現(xiàn)”是本篇論文的重點(diǎn)。整篇論文都是圍繞著這一部分來展開論述的,在這一部分里詳細(xì)介紹網(wǎng)絡(luò)版手機(jī)閱讀器的開發(fā)全過程和開發(fā)過程中存在的疑難問題。其中包括:手機(jī)閱讀器如何讀取文本,j2me文本閱讀器中的文本格式,讀取文本文件的主要技術(shù)實(shí)現(xiàn),將文本文件內(nèi)容顯示出來的技術(shù)實(shí)現(xiàn),閱讀器中的菜單設(shè)計(jì)技術(shù)實(shí)現(xiàn)。通過對(duì)j2me的詳細(xì)介紹我們可以從中了解到其自身的作用,近年來,隨著java手機(jī)的誕生
18、,其無可替代的靈活性與輕便性致使java手機(jī)游戲成為游戲市場(chǎng)的又一亮點(diǎn),它的前景無可限量,必將在我們以后的生活中發(fā)揮著重要的作用。2 j2me技術(shù)概覽2.1 開發(fā)環(huán)境操作系統(tǒng):microsoft windows xp程序語言:java 2開 發(fā) 包:java(tm) 2 standard edition (5.0) sun micro. j2me wireless tool kit 2.2ide:eclipse 3.012.2 j2me的概念j2me的全稱是java2 micro edition (j2me)java2技術(shù)微型版,與j2se、j2ee一樣都是有美國(guó)sun微系統(tǒng)公司提出的java
19、技術(shù)規(guī)范。2.3 j2me簡(jiǎn)介j2me是為了能夠開發(fā)運(yùn)行在小型設(shè)備、獨(dú)立設(shè)備、互聯(lián)移動(dòng)設(shè)備、嵌入式設(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)成。j2me在1999年的javaone開發(fā)人員大會(huì)上初次亮相,它的目標(biāo)是面向智能無線設(shè)備和小型計(jì)算設(shè)備的開發(fā)人員,這些開發(fā)人員需要在他們的產(chǎn)品中整合跨平臺(tái)的能力。無線設(shè)備和小型計(jì)算設(shè)備的消費(fèi)者期望這些設(shè)備能夠有較高的性能。他們希望小型計(jì)
20、算設(shè)備有快速的響應(yīng)時(shí)間,與同種設(shè)備相兼容,擁有功能完備的應(yīng)用程序。消費(fèi)者希望桌面計(jì)算機(jī)和筆記本電腦上的軟件和功能同樣能夠運(yùn)行在移動(dòng)電話和個(gè)人數(shù)字助理上。為了滿足他們的需求,開發(fā)人員必須重新考慮他們?cè)O(shè)計(jì)計(jì)算機(jī)系統(tǒng)的方式。開發(fā)人員需要利用商業(yè)計(jì)算機(jī)上現(xiàn)有的前端和后端軟件的計(jì)算能力,并將這些能力傳遞到微型、移動(dòng)和無線的計(jì)算設(shè)備上。j2me能夠以最小的修改來實(shí)現(xiàn)這種傳遞,如果應(yīng)用程序的設(shè)計(jì)是可伸縮的,應(yīng)用程序就可以適應(yīng)小型計(jì)算設(shè)備上有限的資源。j2me為在小型電子設(shè)備上創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案,能很好的解決軟件跨平臺(tái)的兼容性和安全性的問題。java技術(shù)在無線應(yīng)用方面的優(yōu)勢(shì)非常明顯
21、:1. 應(yīng)用程序可按需下載,而不是購(gòu)買由硬件商提供的套件,可升級(jí)空間大。2. java技術(shù)提供了一個(gè)類庫(kù),它使的應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐富的用戶界面(gui);3. java技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,并在本地運(yùn)行,僅僅是在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬?;谝陨戏治觯琷ava手機(jī)將是未來手機(jī)的發(fā)展方向,是業(yè)界的熱點(diǎn)。2.3.1 j2me架構(gòu)j2me架構(gòu)的模塊化設(shè)計(jì)使應(yīng)用程序可以靈活適應(yīng)小型計(jì)算設(shè)備的限制。j2me架構(gòu)沒有替代小型計(jì)算設(shè)備的操作系統(tǒng)。相反,j2me架構(gòu)由位于原生操作系統(tǒng)之上的多層軟件組成,這些軟件共同稱為“連接有限設(shè)備配置”(connect
22、ed limited device configuration, cldc)。安裝在操作系統(tǒng)之上的cldc形成了小型計(jì)算設(shè)備的運(yùn)行時(shí)環(huán)境。j2me架構(gòu)由3個(gè)軟件層組成:第一層是包括在內(nèi)的配置層,這個(gè)層次直接與原生操作系統(tǒng)進(jìn)行交互。配置層還處理profile和jvm之間的交互。第二層是profile層,由小型計(jì)算設(shè)備的應(yīng)用程序編程接口(api)的最小集合組成。第三層是mobile information device profile( midp )層。midp層由用戶網(wǎng)絡(luò)連接、永久存儲(chǔ)和用戶界面的java api組成。它還能夠訪問cldc庫(kù)和midp庫(kù)。2.3.2 jvm ( 虛擬機(jī) )jvm是
23、專門為微型電子設(shè)備與資源受限設(shè)備如:手機(jī)、尋呼機(jī)、移動(dòng)互聯(lián)網(wǎng)設(shè)備、家用微電子設(shè)備等設(shè)計(jì)的一種輕便、緊湊的java虛擬機(jī)。jvm可以為微型電子設(shè)備提供一個(gè)完整的java運(yùn)行環(huán)境,除了一些微型設(shè)備所必需的適當(dāng)?shù)墓δ苡兴煌?,它是由java虛擬機(jī)規(guī)范定義的真實(shí)的java虛擬機(jī)。它是專門為那些受資源限制,只有幾百k字節(jié)內(nèi)存的微型設(shè)備設(shè)計(jì)的。jvm起初是由sun微系統(tǒng)實(shí)驗(yàn)室為一個(gè)名叫“spotless”的項(xiàng)目創(chuàng)建的。它的目標(biāo)是為資源受限制的palm(是目前較為流行的掌上電腦操作系統(tǒng))可連接的電子設(shè)備,實(shí)現(xiàn)一個(gè)java虛擬機(jī)?;谏鲜鲈?,jvm具有以下幾個(gè)特點(diǎn):(1)小,僅具有40kb至80kb的靜態(tài)
24、內(nèi)存。(2)輕便、精巧。(3)模塊化并可定制。(4)盡可能完全緊湊的完成設(shè)計(jì)目的。2.3.3 midp( 移動(dòng)信息設(shè)備簡(jiǎn)表 )midp是專門為互聯(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類似。midp要求平臺(tái)設(shè)備提供一個(gè)機(jī)制用來存儲(chǔ)簡(jiǎn)單的數(shù)據(jù)記錄,通過正常的平臺(tái)事件,比如重新啟動(dòng)和電池更新維護(hù)系統(tǒng)的完整性。midp是以sun、motorola、nokia為中心的midpeg組織(mobile in
25、formation profile expert group)所制訂出來使用在cldc上的profile,是以能使用在移動(dòng)電話、雙向?qū)χv機(jī)、可無線通信的pda(個(gè)人數(shù)字助理)上面為前提設(shè)計(jì)出來的。另外,像日本國(guó)內(nèi)的ntt docomo、j-phone、kddi等電信商與移動(dòng)電話制造商也都曾參與了midpeg。midp是在cldc的功能上附加提供適合目標(biāo)設(shè)備用的gui與事件處理功能。這樣一來,就可以當(dāng)成midp應(yīng)用程序(midlet)來運(yùn)行了。midp由于是由多個(gè)企業(yè)所共同策劃出來的開放標(biāo)準(zhǔn),因此主要的移動(dòng)電話制造商也會(huì)制造出大量的對(duì)應(yīng)機(jī)種。也就是說,以midp為基準(zhǔn)所制作出來的應(yīng)用程序,也將可
26、以在流通于市面上的移動(dòng)電話上執(zhí)行。另外,midp不僅限于移動(dòng)電話,也已經(jīng)被移植到pda palm os上,而以midp for palm os的名字來稱呼(與kjava是不同的)。在不使用各電信商的擴(kuò)展api的時(shí)候,制作給移動(dòng)電話用的midlet也將可以使用在palm os上面。由于未來midp也將會(huì)搭載到不同設(shè)備之上,也由于其兼容性高,只要寫過一次程序,就可以在其他移動(dòng)電話或是移動(dòng)電話以外的設(shè)備上執(zhí)行;而這也就是它最大的好處。2.4 java appication manager手機(jī)中負(fù)責(zé)調(diào)配程序運(yùn)行資源的管理后臺(tái)是java application manager。它所使用的傳輸媒體可以是紅
27、外線、網(wǎng)絡(luò)、以及其他可用來傳輸?shù)拿襟w。java application manager 會(huì)從網(wǎng)絡(luò)上下載代表該application suite 的jar 檔,接著在手機(jī)上安裝此midlet suite,然后在手機(jī)開始執(zhí)行該應(yīng)用程序。整個(gè)詳細(xì)的運(yùn)作流程如圖2-1所示。存儲(chǔ)媒體手機(jī)內(nèi)建瀏覽器javaappicationmanagerkvm描述檔圖示檔jar檔java servlethtml網(wǎng)頁6安裝應(yīng)用程序8載入并執(zhí)行應(yīng)用程序使用者手機(jī)網(wǎng)站4.選擇應(yīng)用程序7.啟動(dòng)網(wǎng)絡(luò)1瀏覽網(wǎng)頁2.瀏覽描述檔3.瀏覽圖示5.下載圖示和jar檔圖 2-1 jam工作流程圖3 需求分析、程序結(jié)構(gòu)和相關(guān)技術(shù)3.1 本程序
28、需解決的有關(guān)技術(shù)問題1.隨著人們對(duì)一定閱讀的需求增大,我們急需一款能滿足人們?nèi)粘i喿x手機(jī)軟件,既然閱讀器面向的是普通消費(fèi)者而不是計(jì)算機(jī)專家,那么他們不可能深入的學(xué)習(xí)使用技巧。保持程序操作的簡(jiǎn)易是最基本的要求。閱讀器最基本的功能包括:載入圖書、前進(jìn)、后退、存檔、讀取書簽,更換背景。2.用戶運(yùn)行閱讀器時(shí)需要有書簽記錄的功能。這就需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)。記錄書簽的存儲(chǔ)方式也需要有較好的解決方案。手機(jī)中由于處理器和內(nèi)存空間、存儲(chǔ)空間都十分有限,其數(shù)據(jù)庫(kù)系統(tǒng)與普通pc大相徑庭。其數(shù)據(jù)庫(kù)結(jié)構(gòu)較為簡(jiǎn)單,被稱之為rms系統(tǒng)。3.手機(jī)應(yīng)用程序是一項(xiàng)精度要求很高的程序系統(tǒng),因?yàn)槠浯a利用率很高。一個(gè)實(shí)時(shí)運(yùn)行的最終作品
29、,每秒都會(huì)運(yù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ì)中。4.為了美觀,適用性強(qiáng),可能需要采用外部文件引入的圖片貼圖,有關(guān)貼圖,在midp2.0中提供了用于增強(qiáng)游戲功能的game包,使得解決靜態(tài)或動(dòng)態(tài)、畫面背景、屏幕刷新的雙緩沖等都有較好的解決方案。5.程序的結(jié)束、開始、動(dòng)態(tài)信息畫面作為構(gòu)成一個(gè)完美程序都是必不可少的重要部分。良好的用戶界面更是吸引用戶的硬指標(biāo),相關(guān)的美術(shù)構(gòu)圖也需要有一定的考慮。6.java是基于虛擬機(jī)的半解
30、釋型編譯系統(tǒng),其執(zhí)行效率較c+等完全編譯后的程序會(huì)低很多,程序如果不進(jìn)行精簡(jiǎn)和優(yōu)化,將可能導(dǎo)致運(yùn)行的不流暢。除開發(fā)過程中對(duì)結(jié)構(gòu)上的控制、變量的使用、算法的優(yōu)化等優(yōu)化外,還可以使用混淆器(obfuscator)進(jìn)行程序打包后的優(yōu)化。以上相關(guān)技術(shù)細(xì)節(jié)和整體流程將分別在以下小節(jié)闡述。3.2 程序流程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í)際
31、內(nèi)容。消減狀態(tài)(destroyed)停止?fàn)顟B(tài)(paused)運(yùn)行狀態(tài)(active)startapp()destroyapp()呼叫midlet的構(gòu)造函數(shù)destroyapp()pauseapp()圖 3-1 midlet的流程每個(gè)midlet都必須繼承javax.microedition.midlet.midlet這個(gè)抽象類。在midp規(guī)格中定義了midlet的生命周期,以及可以存在的三種狀態(tài),包括paused、active以及destroyed,每一個(gè)midlet在任何時(shí)刻只可能處于其中的一個(gè)狀態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如上圖所示:midlet的三個(gè)狀態(tài),pause、active和destr
32、oyed.在啟動(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),也就是所說的運(yùn)行狀態(tài)。在active狀態(tài)調(diào)用destroyapp(boolean unconditional)或者pauseapp()方法可以使得midlet進(jìn)入destroyed或者pause狀態(tài)。值得一提的是destroyapp(boolean unconditional)方法,事實(shí)上,當(dāng)destroyapp()方法被調(diào)用的時(shí)候,ams通知midlet進(jìn)入destroyed狀態(tài)。在destroyed狀態(tài)的mid
33、let必須釋放了所有的資源,并且保存了數(shù)據(jù)。如果unconditional為false的時(shí)候,midlet可以在接到通知后拋出midletstatechangeexception而保持在當(dāng)前狀態(tài),如果設(shè)置為true的話,則必須立即進(jìn)入destroyed狀態(tài)。本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對(duì)游戲中的所有物體賦予對(duì)象的概念和屬性。運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,在開始運(yùn)行后將先從外部文件載入背景圖片文件,對(duì)背景的所有物體進(jìn)行繪圖。logo 畫面選項(xiàng)畫面主程序屏幕繪圖顯示閱讀進(jìn)度顯示gameover顯示歷史書簽表about開始初始化參數(shù)死亡時(shí)符合結(jié)束條件時(shí)圖 3-2 本程序的主流程圖3.3 ca
34、nvas類為了能有程序開發(fā)人員控制接口的外觀和行為,需要使用大量的初級(jí)用戶接口類,尤其在游戲程序中,幾乎完全依賴的就是canvas抽象類進(jìn)行繪圖。從程序開發(fā)的觀點(diǎn)看,canvas類可與高級(jí)screen類交互,程序可在需要時(shí)在canvas中摻入高級(jí)類的組件。canvas提供了鍵盤事件、指點(diǎn)桿事件(如果設(shè)備支持),并定義了允許將鍵盤按鍵映射為游戲控制鍵的函數(shù)。鍵盤事件由鍵代碼指定,但這樣控制游戲會(huì)導(dǎo)致缺乏通用性,并不是每個(gè)設(shè)備的鍵盤布局都適合游戲的操作。應(yīng)當(dāng)將鍵代碼轉(zhuǎn)換為游戲鍵的代碼,以便硬件開發(fā)商能定義他們自己的游戲鍵布局。3.4 graphics類graphics類提供了簡(jiǎn)單的2d繪圖功能。它
35、具有24位深度色彩的繪制能力,以三原色分別各占一個(gè)字節(jié)表示其顏色。程序只能在paint()函數(shù)中使用graphics繪制,gamecanvas可調(diào)用getgraphics()函數(shù)直接繪制在緩沖區(qū)上,可以在任何時(shí)間請(qǐng)求傳輸?shù)角芭_(tái)。其對(duì)象會(huì)被傳給canvas的paint()函數(shù),以便最終顯示。3.5 midp1.0技術(shù)下的繪制背景技術(shù)在沒有midp2.0前,進(jìn)行游戲繪圖一般需要手動(dòng)編程使用雙緩沖。需要在paint()方法內(nèi)將所想要畫的圖形畫在一張預(yù)先準(zhǔn)備好的背景上,等所有繪圖操作都完成后再將背景的數(shù)據(jù)拷貝到實(shí)際的屏幕上。image類提供了一個(gè)建立背景的靜態(tài)方法createimage(int wid
36、th, int height),再利用getgraphics()方法取得屬于這個(gè)背景的graphics對(duì)象,所進(jìn)行的繪圖操作都會(huì)作用在背景上,等到全部的繪圖操作完成后,再調(diào)用drawimage()方法將背景的數(shù)據(jù)復(fù)制到實(shí)際顯示的屏幕上。這樣的技術(shù)在繪制動(dòng)畫時(shí)特別有用。繪制動(dòng)畫時(shí)經(jīng)常需要不斷地更新畫面,而更新畫面的操作就是先將屏幕以fillrect()的方式清除,再將下一張圖片畫在屏幕上,然而反復(fù)的清除及重繪會(huì)造成屏幕的閃爍現(xiàn)象(flicker),因此使用雙重緩沖的好處就是在背景進(jìn)行這個(gè)清除及重繪的操作,再將完成的繪圖拷貝到屏幕上,由于用戶看不到清除的操作,因此就不會(huì)出現(xiàn)閃爍的現(xiàn)象了。不過在某些
37、midp的實(shí)現(xiàn)上已經(jīng)加上了雙重緩沖的支持,因此在處理前應(yīng)先利用canvas類的isdoublebuffer()方法來判斷。3.6 midp2.0新增的gamecanvas包j2me的流行促進(jìn)幾個(gè)運(yùn)營(yíng)商和制造商開發(fā)了一些支持游戲的類,但是,這卻造成了游戲缺乏可移植性的問題,例如,很難將使用siemens的sprite類的游戲移植到nokia上。在midp2.0版本發(fā)布后,這些游戲移植性問題初步得到了解決。midp2.0新加入了gamecanvas、sprite、layer、layermanager、tiledlayer五個(gè)與游戲開發(fā)相關(guān)的類。其中 layer類一般不會(huì)直接用到。game類的出現(xiàn)不
38、僅降低了錯(cuò)誤出現(xiàn)的幾率,也使游戲代碼變的更小,因?yàn)殚_發(fā)者不需要自己編寫象sprite這種例子。下面將簡(jiǎn)要介紹game類。gamecanvas類繼承自canvas,所以具有canvas所具有的功能,還額外增加了一些便于游戲設(shè)計(jì)的功能。比如: gamecanvas類直接提供了getkeystates(),使程序員可以在同一個(gè)線程自己偵測(cè)按鍵的狀態(tài)。gamecanvas類提供了flushgraphics()的功能,實(shí)現(xiàn)了雙緩沖技術(shù)。所謂的sprite,就是畫面上獨(dú)立移動(dòng)的圖形。sprite類是繼承自layer的用于存儲(chǔ)多楨的基本可視元素。不同的frame可交相顯示,構(gòu)成動(dòng)態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒、
39、由一個(gè)主角圖片就可以方便的得到所有方向的顯示狀態(tài),相比原先只能使用canvas繪圖,需要將所有方向的主角圖象都繪制在png圖象中簡(jiǎn)化了許多。sprite也可以從整合的圖象中讀圖,讀圖時(shí)將把大圖分解為若干等寬等高的小圖。每個(gè)小圖按照其排列順序有相應(yīng)的序號(hào),在程序中調(diào)用其序號(hào),就可以繪制出相應(yīng)的圖片。layermanager提供控制整體畫面層的控制。它包括了一系列自動(dòng)獲取了代號(hào)和位置的層,簡(jiǎn)化了各層加入游戲畫面的過程,提供了自動(dòng)排序和繪制的能力。layermanager存儲(chǔ)了一個(gè)層的列表,新的層可以用函數(shù)附加、刪除和插入。層的序號(hào)相當(dāng)于坐標(biāo)的z軸,0層表示最接近用戶視覺,層數(shù)越高,離用戶越遠(yuǎn)。層號(hào)
40、總是連續(xù)的,即使有中間的層被移除,其他層的序號(hào)會(huì)作相應(yīng)的調(diào)整以保持整體的完整性。lm中的view window控制著與lm相對(duì)坐標(biāo)的可視區(qū)域。改變view window的位置可以制造出滾動(dòng)屏幕的效果。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)圖象格而顯得非常方便。3.7 png圖片格式png(portable network graphic
41、s)格式是midlet唯一支持的圖象格式,png具體格式由png specification,version 1.0定義的。png格式提供透明背景的圖象,這對(duì)繪制游戲畫面和閱讀效果極有幫助。png格式圖片中包含許多定義其圖片特性的冗余部分(chunks)。這些代碼包含在每一個(gè)單獨(dú)的png格式圖象中,然而如果將多個(gè)png圖象合并在一張幅面稍大一些的整圖中,多個(gè)chunks就可以得到精簡(jiǎn),圖片的大小可以得到控制。使用image類中的createimage函數(shù)可從整圖中分割出所需要的元素。在game包中的tiledlayer和sprite類都整合了這樣的功能。本程序中的地圖元素都集成在一張beiji
42、ng.png圖片中,實(shí)現(xiàn)了方便的管理和程序體積的精簡(jiǎn)。3.8內(nèi)存的優(yōu)化手機(jī)內(nèi)存空間小,所以在程序設(shè)計(jì)時(shí)應(yīng)該注意以下幾點(diǎn),以盡量減少內(nèi)存的使用: (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ù)量。所有這些可以借助混淆器來幫助實(shí)現(xiàn) (2)所有代碼寫為一個(gè)類。 (3)只使用一個(gè)線程。 (4)盡量不使用靜態(tài)變量。 (5)將png圖片合并成一張,減少圖形數(shù)據(jù)的大小。將png格式的小分辨率圖象合并在一張大的高分辨率圖象中,由于減少了頭文件的大小
43、,將比合并前的總大小減少許多。3.9 內(nèi)存檢測(cè)器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)制垃圾回收(garbage collection)。由于java語言中,不像許多其他的如c+語言,不需要指定回收函數(shù)中特定不使用的資源,資源回收機(jī)制將自動(dòng)清空無效變量占用的空間。在程序運(yùn)行中也可以調(diào)用system類的gc()函數(shù)手動(dòng)收回廢棄的內(nèi)存。3.10 關(guān)于混淆器jav
44、a 語言并沒有完全編譯成二進(jìn)制可執(zhí)行文件,編譯出的.class文件是一種介于源程序和二進(jìn)制之間的一中基于半解釋的字節(jié)碼,需要虛擬機(jī)來執(zhí)行。它包括了所有的信息。然而這樣會(huì)導(dǎo)致.class很容易被反編譯為源代碼,從而不能保護(hù)作者的知識(shí)成果。目前流行的如decode,jad等反編譯工具可以以很快的速度生成源文件。如果不加以施行有效的措施,將造成嚴(yán)重的后果。由此引入混淆器的概念。混淆器將代碼中的所有變量、函數(shù)、類的名稱變?yōu)楹?jiǎn)短的英文字母代號(hào),如果缺乏相應(yīng)的函數(shù)名指示和程序注釋,即使被反編譯,也將難以閱讀?;煜鞯淖饔貌粌H僅是保護(hù)代碼,它也有精簡(jiǎn)編譯后程序大小的作用。由于以上介紹的減少變量、函數(shù)的命名長(zhǎng)
45、度的關(guān)系,編譯后也會(huì)從.class文件中減少這些冗余的信息?;煜?,體積大約能減少25%,這對(duì)當(dāng)前費(fèi)用較貴的無線網(wǎng)絡(luò)傳輸是有一定意義的。4 程序分析和具體實(shí)現(xiàn)4.1 手機(jī)閱讀器讀取文本由于j2me不可以對(duì)手機(jī)中的文件進(jìn)行讀寫,所以在開發(fā)本程序時(shí),只能在程序打包時(shí)把文本文件作為資源文件加入到j(luò)2me發(fā)布程序中。如果想讀寫手機(jī)上的文件,則要使用各手機(jī)商家提供的特定開發(fā)平臺(tái)和專用的類來開發(fā),下面就文本閱讀器的關(guān)鍵技術(shù)進(jìn)行說明。在j2me中如何讀取文本文件的內(nèi)容,在本系統(tǒng)中寫了一個(gè)函數(shù)用來讀取指定的文本文件,文本文件做為參數(shù)傳給該函數(shù),該函數(shù)的返回值為字符串類型,將文件的內(nèi)容做為一個(gè)完整的字符串返回。
46、在讀取文件內(nèi)容時(shí)用到的主要技術(shù),使用inputstream類定義一個(gè)輸入字節(jié)流對(duì)象in,使用bytearrayoutputstream類定義一個(gè)內(nèi)存數(shù)組輸出字節(jié)流對(duì)象s,通過輸入對(duì)象的in.read()方法來讀取一個(gè)字節(jié),將讀出的字節(jié)通過s.write( )方法加入到s中,再使用s.tostring()方法將內(nèi)存轉(zhuǎn)為字符串返回。讀取文本文件的函數(shù)定義如下: private string myreadline (string testfilename) /函數(shù)頭定義了函數(shù)的參數(shù)為文件名組成的字符串,返回值為一個(gè)字符串。 inputstream in = this.getclass().getre
47、sourceasstream(testfilename); /由文件名參數(shù)來定義一個(gè)輸入流對(duì)象變量in bytearrayoutputstream s; s = new bytearrayoutputstream(); /產(chǎn)生內(nèi)存數(shù)組輸出字節(jié)流對(duì)象變量s try int ch=0; ch=in.read(); /由輸入流對(duì)象變量in的read方法以字節(jié)為單位來讀取文件的內(nèi)容,讀取到文件尾時(shí)的值為-1。 while ( ch!= -1 ) /如果未讀到文件尾把讀取的內(nèi)容寫入s變量中,并讀取下一字節(jié)內(nèi)容 s.write( ch ); ch=in.read(); in.close(); /關(guān)閉輸入流
48、對(duì)象。 catch (ioexception ioe) system.out.println(ioe.tostring(); string str = s.tostring(); /將s變量轉(zhuǎn)為字符串 try s.close(); /關(guān)閉輸出流對(duì)象 catch (ioexception ioe) system.out.println(ioe.tostring(); return str.trim(); /返回文件中的內(nèi)容字符串 4.2 系統(tǒng)設(shè)計(jì)4.2.1 基本概念本文利用j2me技術(shù)開發(fā)了一個(gè)文本閱讀器,實(shí)現(xiàn)了手機(jī)對(duì)文本文件的顯示,給出了該程序的實(shí)現(xiàn)代碼,并對(duì)其關(guān)鍵技術(shù)進(jìn)行了詳細(xì)闡述。4.2.
49、2 軟件設(shè)計(jì)任務(wù)j2me文本閱讀器中的文本格式。讀取文本文件的主要技術(shù)實(shí)現(xiàn)。將文本文件內(nèi)容顯示出來的技術(shù)實(shí)現(xiàn)。閱讀器中的菜單設(shè)計(jì)技術(shù)實(shí)現(xiàn)。4.2.3 總體設(shè)計(jì)j2me文本閱讀器中的文本格式j(luò)2me中文本文件的格式,為了便于程序的開發(fā)和在運(yùn)行中的讀寫處理,對(duì)要處理的文本文件要進(jìn)行一定格式的整理。本程序中的文本要求用純文本即可,每章為一個(gè)獨(dú)立的文件,每一章中均可為多段,在文本中加入的空格和各種符號(hào)都可在閱讀時(shí)如實(shí)的顯示出來。文件寫好后將其存入相應(yīng)項(xiàng)目文件夾下的res文件夾中,如本文中的閱讀器的項(xiàng)目名為test,則可將文本文件存入testres文件夾下。本系統(tǒng)要閱讀三章內(nèi)容,所以制作了三個(gè)文本文件,
50、分別命名為test1.txt、test2.txt、test3.txt,將三個(gè)文件存入testres文件夾中,到此文本內(nèi)容準(zhǔn)備完成。文本讀取文件的主要技術(shù)在j2me中如何讀取文本文件的內(nèi)容,在本系統(tǒng)中寫了一個(gè)函數(shù)用來讀取指定的文本文件,文本文件做為參數(shù)傳給該函數(shù),該函數(shù)的返回值為字符串類型,將文件的內(nèi)容做為一個(gè)完整的字符串返回。在讀取文件內(nèi)容時(shí)用到的主要技術(shù),使用inputstream類定義一個(gè)輸入字節(jié)流對(duì)象in,使用bytearrayoutputstream類定義一個(gè)內(nèi)存數(shù)組輸出字節(jié)流對(duì)象s,通過輸入對(duì)象的in.read()方法來讀取一個(gè)字節(jié),將讀出的字節(jié)通過s.write( )方法加入到s中
51、,再使用s.tostring()方法將內(nèi)存轉(zhuǎn)為字符串返回。讀取文本文件的函數(shù)定義如下: private string myreadline (string testfilename) /函數(shù)頭定義了函數(shù)的參數(shù)為文件名組成的字符串,返回值為一個(gè)字符串。 inputstream in = this.getclass().getresourceasstream(testfilename); /由文件名參數(shù)來定義一個(gè)輸入流對(duì)象變量in bytearrayoutputstream s; s = new bytearrayoutputstream(); /產(chǎn)生內(nèi)存數(shù)組輸出字節(jié)流對(duì)象變量s try int
52、ch=0; ch=in.read(); /由輸入流對(duì)象變量in的read方法以字節(jié)為單位來讀取文件的內(nèi)容,讀取到文件尾時(shí)的值為-1。 while ( ch!= -1 ) /如果未讀到文件尾把讀取的內(nèi)容寫入s變量中,并讀取下一字節(jié)內(nèi)容 s.write( ch ); ch=in.read(); in.close(); /關(guān)閉輸入流對(duì)象。 catch (ioexception ioe) system.out.println(ioe.tostring(); string str = s.tostring(); /將s變量轉(zhuǎn)為字符串 try s.close(); /關(guān)閉輸出流對(duì)象 catch (ioex
53、ception ioe) system.out.println(ioe.tostring(); return str.trim(); /返回文件中的內(nèi)容字符串 將文本文件內(nèi)容顯示出來的技術(shù) 通過form類定義一個(gè)表單對(duì)象f,通過對(duì)象的f.append()的方法將讀取文本文件返回的字符串內(nèi)容加入到表單對(duì)象中,為了該表單內(nèi)容在閱讀完之后可以返回上一級(jí)顯示界面,通過f.addcommand()方法在表單中加入一個(gè)按鈕對(duì)象,并通過f.setcommandlistener(this)方法注冊(cè)commandlistener高級(jí)事件處理,這樣當(dāng)選擇按鈕時(shí)即可調(diào)用commandlistener 高級(jí)事件接口類
54、中的commandaction()函數(shù),在該函數(shù)中判斷是哪個(gè)按鈕被選中,通過該函數(shù)中的代碼來決定處理流程。最后通過display類的display.setcurrent()方法將含有文件內(nèi)容的表單顯示在手機(jī)屏幕上。處理代碼如下: form f=new form(超級(jí)閱讀); /創(chuàng)建一個(gè)form對(duì)象f strcontent=myreadline (/test1.txt); /讀取test1.txt文件中的內(nèi)容返回字符串 f.append(strcontent); /將文本文件的內(nèi)容加入到f對(duì)象中f.addcommand(exitcom); /將退出按鈕選項(xiàng)加入到f對(duì)象中f.setcommandlistener(this); /注冊(cè)高級(jí)事件處理 display.setcurrent(f); /將f對(duì)象顯示到手機(jī)屏幕上閱讀器中的菜單設(shè)計(jì)技術(shù) 本閱讀器菜單結(jié)構(gòu)分兩級(jí),一級(jí)菜單顯示各章的標(biāo)題,通過選擇某一標(biāo)題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 20679:2025 EN Ships and marine technology - Marine environment protection - Testing of ship biofouling in-water cleaning systems
- 我的家鄉(xiāng)敘事課程設(shè)計(jì)
- 弦樂小夜曲課程設(shè)計(jì)
- 中西醫(yī)執(zhí)業(yè)醫(yī)師模擬試卷16
- 礦井灌漿設(shè)計(jì)課程設(shè)計(jì)
- 站姿坐姿課程設(shè)計(jì)
- 花藝烘焙課程設(shè)計(jì)
- 藥品驗(yàn)收入門課程設(shè)計(jì)
- 互聯(lián)網(wǎng)行業(yè)安全管理實(shí)踐
- 領(lǐng)導(dǎo)班子與教學(xué)院校協(xié)調(diào)計(jì)劃
- 儲(chǔ)能系統(tǒng)技術(shù)服務(wù)合同
- GB/T 1094.7-2024電力變壓器第7部分:油浸式電力變壓器負(fù)載導(dǎo)則
- 電大西方行政學(xué)說
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)期末復(fù)習(xí)卷(含答案)
- 2024年度中國(guó)PE、VC基金行業(yè)CFO白皮書
- 2023年南京市江寧區(qū)招聘教師考試真題
- 《中國(guó)民族史》重點(diǎn)筆記(期末)
- 中南大學(xué)《物聯(lián)網(wǎng)原理及應(yīng)用》2022-2023學(xué)年第一學(xué)期期末試卷
- 抓斗課件教學(xué)課件
- 第三方物流供應(yīng)商準(zhǔn)入與考核制度
- 基于Python的去哪兒網(wǎng)酒店數(shù)據(jù)采集與分析
評(píng)論
0/150
提交評(píng)論