在LCDUI架构中画面上同时间只能有个Displayable对象导致MIDP设计中界面流程跳转设计比较麻烦www. 本模式能解决此问题:
考虑以下几个界面:
1.帮助介绍说明
每个帮助介绍说明界面风格致只是介绍说明文字区别用Form实现
2.版权声明
给出系统版权信息用Alert实现在个游戏中最好只有个降低系统内存
3.主界面
用ListIMPLICIT实现为了降低内存使用在系统中也只存在个
4.设置界面
用Form实现
5.游戏界面
用Canvas实现比较好如果是其他应用也可以用Form来实现
6.启动界面
只是在系统开始时用到用Alert实现
代码设计实现如下:
packageexample.midletsuite;
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
importjava.util.*;
publicFlowControlextendsMIDlet{
booleaninit=true;
publicFlowControl{
Navigator.display=Display.getDisplay(this);
Navigator.midlet=this;
}
protectedvoidstartApp{
Navigator.current=Navigator.MAIN_SCREEN;
Navigator.show(null);
(init){
Alertsplash=Alert(\"启动画面\");
splash.Type(AlertType.CONFIRMATION);
splash.Timeout(5000);
Navigator.display.Current(splash);
init=false;
}
}
protectedvoidpauseApp{}
protectedvoiddestroyApp(booleanu){}
}
Navigator{
finalpublicMAIN_SCREEN=1;
finalpublicGAME_SCREEN=2;
finalpublicSET_SCREEN=3;
finalpublicSET_HELP_SCREEN=4;
finalpublicGAME_HELP_SCREEN=5;
publicMIDletmidlet;
publicDisplaydisplay;
publiccurrent=1;
publicvoidshow(Objectobj){
switch(current){
MAIN_SCREEN:
display.Current(MainScreen.getInstance);
;
GAME_SCREEN: [Page]
display.Current(GameScreen.getInstance);
;
SET_SCREEN:
display.Current(SetScreen.getInstance);
;
SET_HELP_SCREEN:
display.Current(HelpScreen((String)obj));
;
GAME_HELP_SCREEN:
display.Current(HelpScreen((String)obj));
;
}
}
publicvoidflow(Stringcmd){
switch(current){
MAIN_SCREEN:
(cmd.equals(\"开始\")){
current=GAME_SCREEN;
show(null);
}(cmd.equals(\"设置\")){
current=SET_SCREEN;
show(null);
}(cmd.equals(\"版权声明\")){
display.Current(CopyrightScreen.getInstance);
show(null);
}(cmd.equals(\"离开\")){
midlet.notyDestroyed;
}
;
GAME_SCREEN:
(cmd.equals(\"规则介绍\")){
current=GAME_HELP_SCREEN;
show(\"游戏规则介绍\");
}(cmd.equals(\"返回\")){
current=MAIN_SCREEN;
show(null);
}
;
SET_SCREEN:
(cmd.equals(\"设置介绍说明\")){
current=SET_HELP_SCREEN;
show(\"设置方式\");
}(cmd.equals(\"返回\")){
current=MAIN_SCREEN;
show(null);
}
;
GAME_HELP_SCREEN:
(cmd.equals(\"返回\")){
current=GAME_SCREEN;
show(null);
}
;
SET_HELP_SCREEN:
(cmd.equals(\"返回\")){
current=SET_SCREEN;
show(null);
}
;
}
}
}
//帮助介绍说明界面Singleton模式
HelpScreenextendsFormimplementsCommandListener{
publicHelpScreen(Stringc){
super(\"帮助介绍说明\");
append(c);
addCommand(Command(\"返回\",Command.OK,1));
CommandListener(this);
}
publicvoidcommandAction(Commandc,Displayabled){
Navigator.flow(c.getLabel);
}
}
//版权界面Singleton模式 [Page]
CopyrightScreenextendsAlert{
privateDisplayableinstance;
synchronizedpublicDisplayablegetInstance{
(instancenull){
instance=CopyrightScreen;
}
instance;
}
privateCopyrightScreen{
super(\"版权声明\");
String(\"此应用的版权归NIIT教研室所有\");
Type(AlertType.INFO);
Timeout(Alert.FOREVER);
}
}
//主界面Singleton模式
MainScreenextendsListimplementsCommandListener{
privateDisplayableinstance;
synchronizedpublicDisplayablegetInstance{
(instancenull){
instance=MainScreen;
}
instance;
}
privateMainScreen{
super(\"主菜单\",List.IMPLICIT);
append(\"开始\",null);
append(\"设置\",null);
append(\"版权声明\",null);
append(\"离开\",null);
CommandListener(this);
}
publicvoidcommandAction(Commandc,Displayabled){
Stringcmd=getString(getSelectedIndex);
Navigator.flow(cmd);
}
}
//设置主界面Singleton模式
SetScreenextendsFormimplementsCommandListener{
privateDisplayableinstance;
TextFieldurl=null;
Gaugevolume=null;
synchronizedpublicDisplayablegetInstance{
(instancenull){
instance=SetScreen;
}
instance;
}
privateSetScreen{
super(\"设置\");
url=TextField(\"请输入服务器设置\",\"://127.0.0.1:99\",40,TextField.URL);
append(url);
volume=Gauge(\"音量\",true,10,3);
append(volume);
addCommand(Command(\"设置介绍说明\",Command.HELP,1));
addCommand(Command(\"返回\",Command.BACK,1));
CommandListener(this);
}
publicvoidcommandAction(Commandc,Displayabled){ [Page]
Navigator.flow(c.getLabel);
}
}
//游戏主界面Singleton模式
GameScreenextendsFormimplementsCommandListener{
privateDisplayableinstance;
TextFieldurl=null;
Gaugevolume=null;
synchronizedpublicDisplayablegetInstance{
(instancenull){
instance=GameScreen;
}
instance;
}
privateGameScreen{
super(\"游戏\");
addCommand(Command(\"规则介绍\",Command.HELP,1));
addCommand(Command(\"返回\",Command.BACK,1));
CommandListener(this);
}
publicvoidcommandAction(Commandc,Displayabled){
Navigator.flow(c.getLabel);
}
}
最新评论