從“傻X”到牛X——基礎(chǔ)篇(一)準備工作
Posted on 2009-04-26 16:16 Silver Wong 閱讀(500) 評論(0) 編輯 收藏 所屬分類: J2ME游戲開發(fā)一、什么是J2ME
J2ME:Java 2 Micro Edition。JAVA的微型版,用其編寫的程序可用于安裝有KVM的小型設(shè)備上。
KVM:Java平臺上最小的虛擬機,用于CLDC配置的虛擬機。
CLDC:Connected Limited Device Configuration,有限連接設(shè)備配置。它是JAVA定義的一種規(guī)范。CLDC定義的硬件參數(shù)是,512KB以下的內(nèi)存,有限能源供應(yīng)(一般指電池),有限網(wǎng)絡(luò)連接,簡單用戶界面,16或32位處理器。CLDC就是用于滿足上述條件的設(shè)備上。
我們現(xiàn)在的手機一般都遠遠超過了上述設(shè)備條件。(別拿2000年前的產(chǎn)品和山寨機說事兒。)
所以,很多手機上都配備了CDC(Connected Device Configuration 連接設(shè)備配置),CDC又是怎么會事呢?它同CLDC一樣,是一種規(guī)范,只不過在硬件上的參數(shù)條件都高級CLDC。
CDC的參數(shù)為,2MB以上內(nèi)存,具有網(wǎng)絡(luò)連接能力,32位或64位處理機。這樣配備的手機顯然可以運行的游戲,要比CLDC上的強得多。
MIDP:它基于CLDC,為我們開發(fā)移動設(shè)備應(yīng)用程序提供了一些必要的API。
MIDlet套件:由MIDP提供,我們要開發(fā)手機游戲,都要基于它。等下用到就知道了。
上面有一堆概念,怕麻煩的同學只需要記住一點,我們開發(fā)J2ME應(yīng)用程序時,主類都要繼承MIDlet類就行了。我們今天的目標是寫一個能在手機上運行的HelloWorld。
二、開發(fā)環(huán)境的搭建
在掃盲篇(一)里,我們已經(jīng)下載安裝了WTK和Eclipse,現(xiàn)在我們要做的就是整合他們,并構(gòu)建一個基于Eclipse的開發(fā)環(huán)境。
1.下載EclipseMe插件。我認為EclipseMe是目前在Eclipse平臺上開發(fā)J2ME最好插件。目前最新版本是eclipseme.feature_1.7.9。點擊eclipseme.feature_1.7.9_site.zip進行下載。
2.打開Eclipse,選擇Help——Software Updates
出現(xiàn)一個標題欄為Software Updates Add-ons的對話框。點擊右邊的Add Site按鈕。
再點Archive按鈕
選擇剛才下載的eclipseme.feature_1.7.9_site.zip,再點OK。
這時,剛才的Software Updates Add-ons對話框中會多出來一項
(上面的圖中,由于我已經(jīng)安過EclipseMe,所以先截圖時就已經(jīng)有這一項了。)
選中EclipseMe這一項,點右上角的Install開始安裝。安裝完后會要求重啟Eclipse。
重啟后,我們按Ctrl+N新建,會多出J2ME這一項。
別慌,配置還沒完,先取消掉。我們還要把WTK整合進來。Window——Preferences。
選中左邊的J2ME,再填寫WTK的安裝路徑。
再設(shè)置Device Management,點Import。
查找目錄填WTK安裝路徑下的bin目錄,點擊Refresh。會出現(xiàn)如下圖的四種虛擬手機設(shè)備,最后Finish。
到此,我們的J2ME開發(fā)環(huán)境就搭建好了。現(xiàn)在開始正式進入J2ME HelloWorld的編寫。
三、HelloWorld
1.Ctrl+N 新建一個J2ME MIDlet Suite,看清楚,是MIDlet Suite。
2.填入工程名稱。
3.選擇設(shè)備,這里我們選默認的彩屏手機。
4.Finish。
這樣,我們一個J2ME的工程就建好了。
現(xiàn)在新建一個J2ME MIDlet。(這次是MIDlet了)
去掉TODO標簽,默認代碼如下:
我們可以看出,這就是一個普通的類, 只不過繼承父類MIDlet。
destroyApp(),pauseApp(),startApp()是由MIDlet給我們提供的三個抽象方法。
說到這里,我們有必要先了解一下J2ME程序運行的三種狀態(tài)。
暫停狀態(tài)(Paused),運行狀態(tài)(Actived)和終止狀態(tài)(Destoryed)。
程序運行,首先進入startApp()方法里,此時程序是運行狀態(tài)。
當有電話來了或人為將游戲暫停時,程序進入pauseApp(),此時程序是暫停狀態(tài)。
當退出程序時,程序會調(diào)用destroyApp(),然后中止。
值得一提的是,程序開始運行時,第一個狀態(tài)并不是運行狀態(tài),而是暫停狀態(tài),不過只暫停了很短暫的時間,程序就開始調(diào)用startApp(),進入運行狀態(tài)。
我們現(xiàn)在來寫一段HelloWorld的代碼。
我們現(xiàn)在點擊運行按鈕的下箭頭,選擇運行設(shè)置
再選中左邊的Wireless Tookit Emulator,點擊"新建"按鈕,此時,會多出一個"New configuration"的設(shè)置。
選中"New configuration",開始設(shè)置,運行。
運行效果如下:
細心的同學可能發(fā)現(xiàn)了,退出程序后,控制臺怎么沒輸出"Bye bye!!"啊?
再好好看看手機模擬器上那個退出按鈕,對,那根本就不是正常退出,而是關(guān)機鍵……
那自然是沒有觸發(fā)destroyApp()方法。關(guān)于怎樣觸發(fā),我們下次再講。不過今天的內(nèi)容還沒完,我們的最終目標是讓它能在正真的手機上運行,那么,還差什么?當然是能在手機上安裝的 .jar 文件。
反鍵點工程名——J2ME——Create Package.
在工程根目錄的deployed目錄下就會生成一個J2ME01.jar 有興趣的同學拿到手機上去試驗一下吧。嘿嘿,可是不能正常退出哦。
本文出自Silver Wong的博客:http://www.aygfsteel.com/conanwsz
J2ME:Java 2 Micro Edition。JAVA的微型版,用其編寫的程序可用于安裝有KVM的小型設(shè)備上。
KVM:Java平臺上最小的虛擬機,用于CLDC配置的虛擬機。
CLDC:Connected Limited Device Configuration,有限連接設(shè)備配置。它是JAVA定義的一種規(guī)范。CLDC定義的硬件參數(shù)是,512KB以下的內(nèi)存,有限能源供應(yīng)(一般指電池),有限網(wǎng)絡(luò)連接,簡單用戶界面,16或32位處理器。CLDC就是用于滿足上述條件的設(shè)備上。
我們現(xiàn)在的手機一般都遠遠超過了上述設(shè)備條件。(別拿2000年前的產(chǎn)品和山寨機說事兒。)
所以,很多手機上都配備了CDC(Connected Device Configuration 連接設(shè)備配置),CDC又是怎么會事呢?它同CLDC一樣,是一種規(guī)范,只不過在硬件上的參數(shù)條件都高級CLDC。
CDC的參數(shù)為,2MB以上內(nèi)存,具有網(wǎng)絡(luò)連接能力,32位或64位處理機。這樣配備的手機顯然可以運行的游戲,要比CLDC上的強得多。
MIDP:它基于CLDC,為我們開發(fā)移動設(shè)備應(yīng)用程序提供了一些必要的API。
MIDlet套件:由MIDP提供,我們要開發(fā)手機游戲,都要基于它。等下用到就知道了。
上面有一堆概念,怕麻煩的同學只需要記住一點,我們開發(fā)J2ME應(yīng)用程序時,主類都要繼承MIDlet類就行了。我們今天的目標是寫一個能在手機上運行的HelloWorld。
二、開發(fā)環(huán)境的搭建
在掃盲篇(一)里,我們已經(jīng)下載安裝了WTK和Eclipse,現(xiàn)在我們要做的就是整合他們,并構(gòu)建一個基于Eclipse的開發(fā)環(huán)境。
1.下載EclipseMe插件。我認為EclipseMe是目前在Eclipse平臺上開發(fā)J2ME最好插件。目前最新版本是eclipseme.feature_1.7.9。點擊eclipseme.feature_1.7.9_site.zip進行下載。
2.打開Eclipse,選擇Help——Software Updates

出現(xiàn)一個標題欄為Software Updates Add-ons的對話框。點擊右邊的Add Site按鈕。

再點Archive按鈕

這時,剛才的Software Updates Add-ons對話框中會多出來一項

(上面的圖中,由于我已經(jīng)安過EclipseMe,所以先截圖時就已經(jīng)有這一項了。)
選中EclipseMe這一項,點右上角的Install開始安裝。安裝完后會要求重啟Eclipse。
重啟后,我們按Ctrl+N新建,會多出J2ME這一項。

別慌,配置還沒完,先取消掉。我們還要把WTK整合進來。Window——Preferences。

選中左邊的J2ME,再填寫WTK的安裝路徑。

再設(shè)置Device Management,點Import。

查找目錄填WTK安裝路徑下的bin目錄,點擊Refresh。會出現(xiàn)如下圖的四種虛擬手機設(shè)備,最后Finish。

到此,我們的J2ME開發(fā)環(huán)境就搭建好了。現(xiàn)在開始正式進入J2ME HelloWorld的編寫。
三、HelloWorld
1.Ctrl+N 新建一個J2ME MIDlet Suite,看清楚,是MIDlet Suite。
2.填入工程名稱。

3.選擇設(shè)備,這里我們選默認的彩屏手機。

4.Finish。
這樣,我們一個J2ME的工程就建好了。

現(xiàn)在新建一個J2ME MIDlet。(這次是MIDlet了)
去掉TODO標簽,默認代碼如下:
- import javax.microedition.midlet.MIDlet;
- import javax.microedition.midlet.MIDletStateChangeException;
- public class Hello extends MIDlet {
- public Hello() {
- }
- protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
- }
- protected void pauseApp() {
- }
- protected void startApp() throws MIDletStateChangeException {
- }
- }
我們可以看出,這就是一個普通的類, 只不過繼承父類MIDlet。
destroyApp(),pauseApp(),startApp()是由MIDlet給我們提供的三個抽象方法。
說到這里,我們有必要先了解一下J2ME程序運行的三種狀態(tài)。
暫停狀態(tài)(Paused),運行狀態(tài)(Actived)和終止狀態(tài)(Destoryed)。
程序運行,首先進入startApp()方法里,此時程序是運行狀態(tài)。
當有電話來了或人為將游戲暫停時,程序進入pauseApp(),此時程序是暫停狀態(tài)。
當退出程序時,程序會調(diào)用destroyApp(),然后中止。
值得一提的是,程序開始運行時,第一個狀態(tài)并不是運行狀態(tài),而是暫停狀態(tài),不過只暫停了很短暫的時間,程序就開始調(diào)用startApp(),進入運行狀態(tài)。
我們現(xiàn)在來寫一段HelloWorld的代碼。
- /**
- * javax.microedition.lcdui包 中包含了液晶顯示屏用戶界面的一些類。
- * UI操作少不了它。
- */
- import javax.microedition.lcdui.Display;
- import javax.microedition.lcdui.Form;
- import javax.microedition.midlet.MIDlet;
- import javax.microedition.midlet.MIDletStateChangeException;
- /**
- * 繼承了MIDlet的類將成為J2ME應(yīng)用程序的入口類,
- * 入口方法也不在是以前J2SE的main()方法。
- */
- public class Hello extends MIDlet {
- Form f; //聲明一個窗體
- Display d; //聲明一個顯示對象,也可以稱為屏幕控制對象吧。
- /**
- * J2ME程序一定要在構(gòu)造函數(shù)中初始化數(shù)據(jù)。
- * 不要寫在startApp()里,因為從暫停狀態(tài)回到運行狀態(tài)時會調(diào)用startApp()方法
- */
- public Hello() {
- f = new Form("Hello"); //新建一個標題為Hello的窗體對象
- f.append("Hello World"); //在窗體中增加一個"Hello World"字符串
- d = Display.getDisplay(this); //獲得顯示對象
- }
- protected void startApp() throws MIDletStateChangeException {
- /**
- * 程序開始運行時,用顯示對象的setCurrent()方法,來確定顯示哪一個窗體。
- * J2ME應(yīng)用程序不像我們PC上的應(yīng)用程序可以顯示多個窗體,
- * J2ME一次只能顯示一個窗體。
- */
- d.setCurrent(f);
- }
- protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
- System.out.println("Bye bye!!"); //程序退出時,控制臺輸出"Bye bye!!"
- }
- protected void pauseApp() {
- }
- }
我們現(xiàn)在點擊運行按鈕的下箭頭,選擇運行設(shè)置

再選中左邊的Wireless Tookit Emulator,點擊"新建"按鈕,此時,會多出一個"New configuration"的設(shè)置。

選中"New configuration",開始設(shè)置,運行。

運行效果如下:

細心的同學可能發(fā)現(xiàn)了,退出程序后,控制臺怎么沒輸出"Bye bye!!"啊?
再好好看看手機模擬器上那個退出按鈕,對,那根本就不是正常退出,而是關(guān)機鍵……
那自然是沒有觸發(fā)destroyApp()方法。關(guān)于怎樣觸發(fā),我們下次再講。不過今天的內(nèi)容還沒完,我們的最終目標是讓它能在正真的手機上運行,那么,還差什么?當然是能在手機上安裝的 .jar 文件。
反鍵點工程名——J2ME——Create Package.

在工程根目錄的deployed目錄下就會生成一個J2ME01.jar 有興趣的同學拿到手機上去試驗一下吧。嘿嘿,可是不能正常退出哦。
本文出自Silver Wong的博客:http://www.aygfsteel.com/conanwsz