界面设计:界面流程控制模式设计



在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);

  }

  }
Tags:  网站界面设计 设计流程 软件界面设计 界面设计

延伸阅读

最新评论

发表评论