<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個(gè)游戲并不難,難的是做一個(gè)好游戲;完美在于積累!

    現(xiàn)在開(kāi)始嘗試開(kāi)發(fā)J2ME程序。我的選擇是Windows XP 2600 Professional+J2SE SDK 1.3.0+ Tomcat 4.0+J2MEWTK 1.0.3Beta。從開(kāi)始菜單中選擇J2MEWTK---->Ktoolbar。Ktoolbar是J2MEWTK提供的一個(gè)簡(jiǎn)陋的IDE工具。
    進(jìn)入Ktoolbar以后,觀察窗口,在菜單的下面有四個(gè)按鈕,分別是:
    New Project:創(chuàng)建一個(gè)新的項(xiàng)目。
    Open Project:打開(kāi)一個(gè)項(xiàng)目。
    Setting:對(duì)當(dāng)前項(xiàng)目的環(huán)境進(jìn)行設(shè)置。
    Build:編譯項(xiàng)目中的所有Java文件。
    Run:啟動(dòng)缺省的模擬器,將當(dāng)前項(xiàng)目載入,運(yùn)行。
    Clear Console:清除控制臺(tái)輸出。
    在上述按鈕的下面,有一個(gè)下拉列表框,在這里你可以設(shè)置當(dāng)前項(xiàng)目所使用的模擬器,這個(gè)設(shè)置可以覆蓋缺省的模擬器。在此下拉列表框下面,是一個(gè)文本框,這就是所謂的控制臺(tái)了。
    所有編譯、運(yùn)行信息都會(huì)在這個(gè)控制臺(tái)中輸出。你可以使用Clear Console按鈕將控制臺(tái)中的信息完全清除。
    現(xiàn)在來(lái)看看菜單。Ktoolbar的菜單極其簡(jiǎn)單,沒(méi)有什么可說(shuō)的。Project菜單的package菜單項(xiàng)的作用是將當(dāng)前項(xiàng)目打包輸出。這個(gè)菜單項(xiàng)特別有用,當(dāng)你完成項(xiàng)目開(kāi)發(fā)之后,使用這個(gè)菜單項(xiàng)可以產(chǎn)生一個(gè)jar文件,這樣就完成的項(xiàng)目的初步發(fā)布。
    現(xiàn)在來(lái)創(chuàng)建一個(gè)新的項(xiàng)目,單擊New Project按鈕,或者是使用File菜單的同名菜單項(xiàng)。出現(xiàn)一個(gè)新窗口。這個(gè)新窗口有兩個(gè)文本框,第一個(gè)文本框是Project Name,輸入fancy。第二個(gè)文本框是MIDlet Class Name,輸入fancy.test.HelloWorld。然后單擊OK,又出現(xiàn)一個(gè)對(duì)話框,要你配置項(xiàng)目的環(huán)境,不理,單擊OK按鈕關(guān)閉該窗口,回到Ktoolbar的主窗口。經(jīng)過(guò)上述步驟,你已經(jīng)創(chuàng)建了一個(gè)名為fancy的J2ME項(xiàng)目。

    安裝J2MEWTK以后,你應(yīng)該仔細(xì)瀏覽一下J2MEWTK的目錄結(jié)構(gòu),這是一個(gè)很好的習(xí)慣。J2MEWTK 的目錄結(jié)構(gòu)如下:
    appdb文件夾:里面有duke的一些靚照。
    apps文件夾:里面有J2MEWTK的一些例子程序,我們建立的項(xiàng)目文件也存放在里面。
    bin文件夾:里面全部是exe程序。
    docs文件夾:不用多說(shuō)了,是地球人都知道。
    lib文件夾:存放MIDP API。
    wtklib文件夾:存放J2MEWTK用到的類(lèi)庫(kù),以及一些資源文件,比如按鈕的圖標(biāo)等等。
    在這些文件夾中,apps文件夾特別需要留意,這個(gè)文件夾有下列子文件夾:
    example:存放J2MEWTK的例子,側(cè)重于圖形方面,例子比較大,復(fù)雜,難看懂。
    lib:空,不知道放什么東西。
    tmplib:空,不知道放什么東西。
    UIDemo:存放J2MEWTK的例子,側(cè)重于用戶界面設(shè)計(jì)方面。例子不大,難度中等。
    fancy:這個(gè)文件夾原來(lái)是沒(méi)有的,當(dāng)我們創(chuàng)建fancy項(xiàng)目的時(shí)候,J2MEWTK自動(dòng)為我們創(chuàng)建的文件夾。
    進(jìn)入fancy文件夾,它里面又有很多子文件夾,如下所示:
    bin:存放項(xiàng)目的打包輸出文件。
    classes:存放編譯器產(chǎn)生的class文件。
    lib:空,不知道有什么用。
    res:存放資源文件,例如項(xiàng)目中用到的圖片。
    src:存放項(xiàng)目的源代碼。
    tmpclasses:存放編譯器產(chǎn)生的class文件,是classes文件夾的鏡像。
    tmplib:空,不知道有什么用,是lib文件夾的鏡像。

    現(xiàn)在該是使用J2ME說(shuō)Hello World的時(shí)候了。選擇你最喜歡的文本編輯器,例如Editplus, 輸入下面的代碼:
    package fancy.test;

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;

    public class HelloWorld extends MIDlet implements CommandListener
    {
    private Display display;
    private form props;

    private Command exitCommand = new Command("Exit", Command.EXIT, 1);

    public HelloWorld()
    {
    display = Display.getDisplay(this);
    }

    public void startApp()
    {
    props = new form("Hello World");
    props.append("Hello World!\n");

    props.addCommand(exitCommand);
    props.setCommandListener(this);
    display.setCurrent(props);
    }

    public void commandAction(Command c, Displayable s)
    {
    if (c == exitCommand)
    {
    destroyApp(false);
    notifyDestroyed();
    }
    }

    public void destroyApp(boolean unconditional)
    {
    }

    public void pauseApp()
    {
    display.setCurrent(null);
    props = null;
    }

    }
    然后將該文件保存在J2MEWTK_HOME\apps\fancy\src\fancy\test目錄下面,文件名為HelloWorld.java。注意:你需要在fancy\src目錄下面創(chuàng)建fancy文件夾,然后再在fancy文件夾下面創(chuàng)建test文件夾。最后才保存HelloWorld.java文件。
    現(xiàn)在轉(zhuǎn)到J2MEWTK的主窗口,單擊Build按鈕,編譯整個(gè)項(xiàng)目,查看控制臺(tái)的輸出信息,一切無(wú)誤,再單擊Run按鈕,運(yùn)行此程序。 

    ------HelloWorld解釋----------

    1) package fancy.test; 這行代碼聲明當(dāng)前類(lèi)所在的包。這是有必要的。而且這個(gè)包名必須和src文件夾中的目錄結(jié)構(gòu)對(duì)應(yīng)。

    2) import javax.microedition.midlet.*;      import javax.microedition.lcdui.*; 這兩行代碼導(dǎo)入必要的Java包,這兩個(gè)包的作用在后面會(huì)提及,這里就不多說(shuō)了。

    3) public class HelloWorld extends MIDlet implements CommandListener
    J2ME程序一般應(yīng)該繼承MIDlet,實(shí)現(xiàn)CommandListener。就如Applet必須繼承Applet,可能實(shí)現(xiàn)Runnable接口一樣。

    4) private Display display; private form props;
    定義兩個(gè)私有對(duì)象,Display代表屏幕,顯示區(qū)域。form是容器的一種。在J2ME程序中,不但有容器的概念,還有畫(huà)布(Canvas)的概念。這個(gè)程序在form容器中顯示文本。

    5) private Command exitCommand = new Command("Exit", Command.EXIT, 1);
    聲明一個(gè)Command對(duì)象。J2ME的事件處理機(jī)制和J2SE的事件處理機(jī)制不太一樣。在J2ME程序中,必須預(yù)先定義一些Command對(duì)象,注冊(cè)到程序中。當(dāng)設(shè)備發(fā)生了某個(gè)事件,會(huì)產(chǎn)生相應(yīng)的Command對(duì)象,并把它傳遞給一個(gè)事件處理函數(shù)----commandAction(),由它對(duì)所產(chǎn)生的事件做統(tǒng)籌處理。


    6)
    public HelloWorld()
    {
    display = Display.getDisplay(this);
    }
    這個(gè)是構(gòu)造函數(shù),函數(shù)內(nèi)部,調(diào)用Display對(duì)象的靜態(tài)方法---getDisplay(),獲取屏幕對(duì)象, 實(shí)例化display變量。這個(gè)調(diào)用是必要的。你可以在構(gòu)造函數(shù)中做這個(gè)工作,也可以在startApp() 方法中做這個(gè)工作。推薦在構(gòu)造函數(shù)中完成。

    7)MIDlet程序的運(yùn)行流程
    構(gòu)造函數(shù)---->startApp()------>偵聽(tīng)事件,接受命令------->commandAction()方法------->調(diào)用別的方法----------->如果是exit命令--------->pauseApp()--------->destroyApp()方法。
    實(shí)際上MIDlet程序的運(yùn)行流程和Applet程序的運(yùn)行流程差不多。


    public void startApp()
    {
    props = new form("Hello World");
    props.append("Hello World!\n");

    props.addCommand(exitCommand);
    props.setCommandListener(this);
    display.setCurrent(props);
    }

    這是startApp()方法。這個(gè)方法是父類(lèi)的抽象方法,在子類(lèi)中必須予以覆蓋。首先實(shí)例化form對(duì)象----------props,form的構(gòu)造函數(shù)的參數(shù)(Hello World)就是屏幕的標(biāo)題。form對(duì)象是一容器,在里面可以包含別的東西,props.append(“…..”);的作用就是在這個(gè)容器中存放一個(gè)字符串。這個(gè)字符串會(huì)在屏幕中顯示出來(lái)。
    接下來(lái)的三行代碼分別做這樣的工作:
    將Exit命令注冊(cè)到form對(duì)象(props)中,這樣form對(duì)象(props)可以對(duì)該命令作出響應(yīng)。
    設(shè)置form對(duì)象(props)的命令監(jiān)聽(tīng)者。
    將form對(duì)象設(shè)置為屏幕顯示的對(duì)象。
    你可以試著注釋掉這三行代碼,再編譯運(yùn)行這個(gè)程序,看看會(huì)發(fā)生什么情況。

    9)
    public void commandAction(Command c, Displayable s)
    {
    if (c == exitCommand)
    {
    destroyApp(false);
    notifyDestroyed();
    }
    }
    這個(gè)方法是事件處理的中樞,它接受各種命令,并對(duì)其進(jìn)行分析,再分別調(diào)用合適的處理方法。在這個(gè)例子中,當(dāng)接收到Exit命令以后,馬上銷(xiāo)毀程序,退出。

    10)destroyApp()方法的作用是退出程序并銷(xiāo)毀程序?qū)ο蟆auseApp()方法的作用是暫停程序,并銷(xiāo)毀容器對(duì)象或者是畫(huà)布對(duì)象。手機(jī)屏幕將會(huì)是一片空白。

    11)------J2ME的類(lèi)庫(kù)結(jié)構(gòu)

    javax.microedition.lcdui:用戶界面包,主要用于構(gòu)造程序的用戶界面。Command、form都是這個(gè)包的類(lèi)。
    javax.microedition.rms:這個(gè)包實(shí)現(xiàn)了對(duì)手機(jī)數(shù)據(jù)的存取功能。
    javax.microedition.midlet:這個(gè)包是MIDlet程序的聲明周期包,主要定義了MIDlet類(lèi),MIDlet類(lèi)是一個(gè)抽象類(lèi),里面聲明了startApp()、destroyApp()、pauseApp()等抽象方法。
    javax.microedition.io:網(wǎng)絡(luò)IO包。有HttpConnection接口和Connection接口、Datagram接口。
    java.io.*
    java.lang.*
    java.util.*
    上面這三個(gè)包屬于J2ME核心包,J2ME中的核心包和J2SE中的同名核心包有些差別,主要是功能大大簡(jiǎn)化了,許多類(lèi)、方法都沒(méi)有了,只能實(shí)現(xiàn)一些最基本的功能。

    posted on 2005-02-06 20:44 藍(lán)色雪焰 閱讀(155) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
     
    主站蜘蛛池模板: 黄桃AV无码免费一区二区三区| 99视频精品全部免费观看| 国产亚洲真人做受在线观看| 99精品免费观看| 亚洲成a∨人片在无码2023| 在线精品亚洲一区二区三区| 色影音免费色资源| 一二三区免费视频| 亚洲成年人免费网站| 亚洲一级片免费看| 亚洲人成色7777在线观看| 永久在线免费观看| a级毛片免费观看网站| 456亚洲人成影院在线观| 亚洲国产一二三精品无码| 午夜一级免费视频| 99热免费在线观看| 日韩在线视频线视频免费网站| 亚洲成a人片在线观看播放| 亚洲男人天堂2020| 黄色网址免费在线观看| 最新亚洲春色Av无码专区| 亚洲成a人片77777kkkk| 91在线老王精品免费播放| 黄色毛片视频免费| 国产偷国产偷亚洲清高动态图| 天天摸天天操免费播放小视频| 99久久国产精品免费一区二区| 国产精品亚洲а∨无码播放麻豆| 国产成人免费网站在线观看| 2019中文字幕在线电影免费| a毛看片免费观看视频| 亚洲视频国产精品| 亚洲男人的天堂www| 免费又黄又爽的视频| 最新猫咪www免费人成| 亚洲免费一级视频| 国产亚洲情侣久久精品| 亚洲色欲啪啪久久WWW综合网| 久久久亚洲欧洲日产国码aⅴ| 永久免费毛片手机版在线看|