第二課•認識 MIDlet
MIDlet 中三個重要方法
要用到以上三個方法,就要在程式一開始時匯入 javax.microedition.midlet 套件,此套件內含重要的 MIDlet API。
MIDlet 的命令
在 javax.microedition.lcdui.commandListener 介面中定義了 commandAction( ) 這個方法,使用者會按一些手機 buttons 去執行命令,這些命令是由 commandAction( ) 去處理的。
MIDlet 的畫面顯示
在 javax.microedition.lcdui 套件中定義了 Display﹝顯示畫面﹞這個物件,通常從 MIDlet 的 startApp( ) 取得一個指向 Display 的參考,就可以用來建立遊戲螢幕和使用者介面,每個流動裝置通常只有一個 Display。
當要描繪圖形或顯示影像圖片時,會在 Display 以上用到 Canvas﹝畫布﹞來處理,Canvas 是在 javax.microedition.lcdui.Canvas 介面中定義的。
如果要有效率地描繪遊戲中的動態圖形,就要用 GameCanvas,它是在 javax.microedition.lcdui.GameCanvas 介面中定義的。
編寫 "Skeleton MIDlet" 範例程式重點
首先要匯入以下兩個主要套件:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
讓 SkeletonMIDlet ﹝你自製的 MIDlet﹞繼承 MIDlet 的所有方法和特性,用 CommandListener 作介面是要讓 MIDlet 能夠處理使用者的命令事件。
public class SkeletonMIDlet extends MIDlet implements CommandListener {
SCanvas 是一個使用者自訂的類型,存於另一檔案中,其中包含設定畫面背景顏色及在畫布上列印出手機的一些內部資料。
private SCanvas canvas;
MIDlet 啟動時要建立 canvas,Exit 命令會被產生並加入到 canvas 當中,canvas就可以利用 CommandListerner 接收及回應這個命令,之後,要啟動 canvas。
public void startApp( ) {
if (canvas == null) {
canvas = new SCanvas(Display.getDisplay(this));
Command exitCommand = new Command("Exit", Command.EXIT, 0);
canvas.addCommand(exitCommand);
canvas.setCommandListener(this);
}
canvas.start( );
}
Exit 命令由 commandAction( ) 來處理的,如果 Exit 命令真的發出,destroyApp( ) 方法就會摧毀目前的 MIDlet,接下來要用 notifyDestroyed( ) 方法來通知應用程式管理員目前的 MIDlet 已被摧毀。
public void commandAction(Command c, Displayable s) {
if (c.getCommandType( ) == Command.EXIT) {
destroyApp(true);
notifyDestroy( );
}
}
MIDlet 專案的資料夾結構
建置與測試
把 Skeleton.zip 解壓到 J2ME Wireless Toolkit 的 apps 資料夾底下,再用 KToolbar 來開啟 Skeleton。只要按工具列上的「Build」,如能成功建置,再按工具列上的「Run」,就可以透過 J2ME 手機模擬器來執行它,結果如下圖:
若想增加其他遊戲程式設計相關內容,可電郵至網主提出