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

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

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

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

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

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

    現在該是使用J2ME說Hello World的時候了。選擇你最喜歡的文本編輯器,例如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目錄下面創建fancy文件夾,然后再在fancy文件夾下面創建test文件夾。最后才保存HelloWorld.java文件。
    現在轉到J2MEWTK的主窗口,單擊Build按鈕,編譯整個項目,查看控制臺的輸出信息,一切無誤,再單擊Run按鈕,運行此程序。 

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

    1) package fancy.test; 這行代碼聲明當前類所在的包。這是有必要的。而且這個包名必須和src文件夾中的目錄結構對應。

    2) import javax.microedition.midlet.*;      import javax.microedition.lcdui.*; 這兩行代碼導入必要的Java包,這兩個包的作用在后面會提及,這里就不多說了。

    3) public class HelloWorld extends MIDlet implements CommandListener
    J2ME程序一般應該繼承MIDlet,實現CommandListener。就如Applet必須繼承Applet,可能實現Runnable接口一樣。

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

    5) private Command exitCommand = new Command("Exit", Command.EXIT, 1);
    聲明一個Command對象。J2ME的事件處理機制和J2SE的事件處理機制不太一樣。在J2ME程序中,必須預先定義一些Command對象,注冊到程序中。當設備發生了某個事件,會產生相應的Command對象,并把它傳遞給一個事件處理函數----commandAction(),由它對所產生的事件做統籌處理。


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

    7)MIDlet程序的運行流程
    構造函數---->startApp()------>偵聽事件,接受命令------->commandAction()方法------->調用別的方法----------->如果是exit命令--------->pauseApp()--------->destroyApp()方法。
    實際上MIDlet程序的運行流程和Applet程序的運行流程差不多。


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

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

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

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

    10)destroyApp()方法的作用是退出程序并銷毀程序對象。pauseApp()方法的作用是暫停程序,并銷毀容器對象或者是畫布對象。手機屏幕將會是一片空白。

    11)------J2ME的類庫結構

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

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

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
     
    主站蜘蛛池模板: 国产视频精品免费| 全免费a级毛片免费看无码| 久久久久亚洲精品男人的天堂| 亚洲Av永久无码精品黑人| 一二三四在线观看免费高清中文在线观看| 亚洲av日韩综合一区在线观看| 拍拍拍无挡免费视频网站| 国产偷国产偷亚洲清高动态图 | 久久av无码专区亚洲av桃花岛| 大地资源在线资源免费观看| 久久久亚洲精品无码| 222www免费视频| 77777亚洲午夜久久多喷| 无码高潮少妇毛多水多水免费| 亚洲精品乱码久久久久久V| 国产成人免费一区二区三区| 男人免费视频一区二区在线观看| 亚洲一区二区三区国产精品| 东方aⅴ免费观看久久av| 日韩亚洲Av人人夜夜澡人人爽 | 国产色爽女小说免费看| 一区在线免费观看| 久久精品九九亚洲精品| 成人免费看吃奶视频网站| 青娱乐在线免费观看视频| 亚洲乱码精品久久久久..| 日韩在线播放全免费| 国产亚洲精品美女久久久久| 亚洲啪啪AV无码片| 免费无码精品黄AV电影| 黄色三级三级免费看| 国产成人无码综合亚洲日韩 | 可以免费看黄的网站| 久久亚洲中文无码咪咪爱| 亚洲伊人久久大香线蕉综合图片| 91精品成人免费国产片| 亚洲AV无码片一区二区三区| 亚洲精品国产品国语在线| 欧美最猛性xxxxx免费| 不卡视频免费在线观看| 亚洲国产日韩精品|