《高级用户界面》PPT课件.ppt_第1页
《高级用户界面》PPT课件.ppt_第2页
《高级用户界面》PPT课件.ppt_第3页
《高级用户界面》PPT课件.ppt_第4页
《高级用户界面》PPT课件.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

J2ME手机游戏开发技术,第四章高级用户界面,第四章高级用户界面,高级用户界面类的结构高级用户界面的管理和实现高级事件机制,创建和使用高级界面的各种组件处理高级事件,容器类和Item类的使用高级事件及Item的状态监听,熟悉高级界面的使用和结构熟悉高级事件的处理机制,第四章高级用户界面,高级用户界面,MIDP1.0提供的界面类是javax.microedition.lcdui,其中的类关系如下:,第四章高级用户界面,高级用户界面,高级屏幕对象分为以下两个范畴:1)封装了复杂的用户界面组件的屏幕对象(例如类List、Alert或者TextBox等)。这些屏幕类的结构是定义好的,应用程序不能在这些屏幕对象上添加其他组件。2)通用的屏幕对象(例如Form)。应用程序可以在这个屏幕对象中添加、删除、修改文本、图像和简单的相关UI组合集合。,第四章高级用户界面,高级用户界面,类Display方法说明,java.lang.Object-javax.microedition.lcdui.Display方法Displayable.getCurrent()获得此MIDlet当前的Displayable对象staticDisplay.getDisplay(MIDletm)获得此MIDlet惟一的Display对象voidsetCurrent(Alertalert,DisplayablenextDisplayable)设置此MIDlet的当前Displayable对象。,第四章高级用户界面,高级用户界面,Displayable,在显示设备上显示的用户界面对象为Displayable对象.在同一时刻应用程序最多只能有一个Displayable对象.这个Displayable对象显示在显示屏设备上,并通过它进行与用户的交互。,第四章高级用户界面,高级用户界面,Displayable,类Displayable方法说明:voidaddCommand(Commandcmd)向Displayable对象添加一个Command对象booleanisShown()检查Displaysble对象在显示屏上是否可见voidremoveCommand(Commandcmd)从Displayable对象中删除一个Command对象voidsetCommandListener(CommandListener1)为这个Displayable对象设置一个CommandListener对象,它会取代任何前面设置的CommandListener对象,第四章高级用户界面,高级用户界面,Screen,Screen是所有高级用户界面类的公共父类,在Displayable类的基础之上增加了可选的标题和滚动条(ticker)两个属性,要显示的内容以及用户的交互由其子类定义,第四章高级用户界面,高级用户界面,Command类,Command类封装了游戏中的命令行为(退出、开始游戏等)的语义信息,它只包含了命令的信息,而不是激活命令时实际执行的功能。操作在CommandListener接口中定义。Command类的构造方法:publicCommand(Stringlabel,intcommandType,intpriority);label是显示在画面上的名称,commandType是命令类型,priority是优先权,号码越低代表优先权越高,优先权越高,代表用户越能够方便地找到它们。commandType的取值为:BACK,CANCEL,EXIT,HELP,ITEM,OK,SCREEN,STOP在不同的机器上,Command的位置会因为类型的不同而有所不同,第四章高级用户界面,高级用户界面,Command类,所有从Displayable扩展的组件都拥有如下方法:publicvoidaddCommand(Commandc)publicvoidremoveCommand(Commandc)Command类用来得到类型,标签和优先级的方法:publicintgetCommandType()publicStringgetLabel()publicintgetPriority(),第四章高级用户界面,高级用户界面,Command类,写一个例题实现八个Command控件,列举了Command中的详细用法,这八个Command类型不同,在Form中出现的位置也有不同。通过它来观察不同类型的优先级。,第四章高级用户界面,高级用户界面,CommandListener类,Screen和Canvas对象都为发生用户交互时发送的命令提供了监听者。监听者对象必须实现CommandListener接口。可以使用Displayable类的setCommandListener()方法注册监听者,Screen和Canvas类继承了该方法。MIDlet创建的每个Displayable对象只能拥有一个CommandListener对象。publicvoidsetCommandListener(CommandListenerc);,第四章高级用户界面,高级用户界面,CommandListener类,CommandListener接口用于那些需要从实现中接收高层事件的MIDlet。监听者必须实现该接口commandAction()方法。publicvoidcommandAction(Commandc,Displayabled);第一个参数c是一个命令对象,用来标识已经使用addCommand()方法添加到Displayable对象并且已被调用的命令。第二个参数d是发生事件的Displayable对象。,第四章高级用户界面,高级用户界面,Ticker类,Ticker即滚动文字,是一个出现在标题上方的图形组件,可以用来向用户滚动信息。滚动条可以属于Alert,TextBox,List和Form中的一个或多个。在MIDP1.0之中Ticker只能用在Screen的子类,但是MIDP2.0之后,已经可以用在Displayable的子类了。Ticker类的构造方法:Ticker(Stringstr),第四章高级用户界面,高级用户界面Ticker类,Ticker的方法StringgetString()访问滚动条使用的字符串voidsetString(Strings)设置滚动条的字符串注意:没有启动或停止滚动条的方法。滚动条的字符串是连续滚动的。最好在滚动条字符串末尾添加一些空格,以免信息的末尾和开头连在一起。滚动的方向和速度取决于的实现。,第四章高级用户界面,高级用户界面Ticker类,范例见TickerTestMIDlet.java代码讲解结合上一节讲述的CommandLisener和本节讲述的Ticker,对二者的用法做了详细的描述。在CommandAction中接受玩家的输入,如果输入的是“开始”这个命令,Form会设置一个Ticker,它的标题是“运作中”;如果输入的是“停止”命令,Form会设置一个Null的Ticker,这样滚动条就消失了。,第四章高级用户界面,高级用户界面TextBox类,TextBox是可以用于输入和编辑文本的文本框,支持多行输入。TextBox有所谓“实际内容”和“显示内容”的概念。所谓“实际内容”,指的是TextBox对象内容实际能够存放的内容数。而“显示内容”指的是设备实际上展示TextBox时,用户所能看到的内容。根据实际上设备本身的情况,用户所看到的内容可能会比TextBox内部存放的内容要来得少。而且在展示时,实际内容有可能被机器作自动换行,以符合实机上屏幕大小的限制。,第四章高级用户界面,高级用户界面TextBox类,TextBox类的构造方法:TextBox(Stringtitle,Stringtext,intmaxSize,intconstraints)title是标题,text文本,maxSize是最大字符数,constraints是文本框的类型。constraints的取值为:TextField.ANY任意文字TextField.EMAILADDR邮件地址TextField.NUMBER整数TextField.PASSWD口令TextField.PHONENUMBER电话号码TextField.URL网络地址TextField.DECIMAL数字,第四章高级用户界面,高级用户界面TextBox类,范例见TextBoxMIDlet.java代码讲解本例主要对TextBox的用法作了详细的介绍。TextBoxtb=newTextBox(文字输入测试,名字,6,TextField.ANY)这是实例化一个TextBox实例,“文字输入测试”是标题,“名字”是内容,允许输入6个字母或数字,允许任何类型的输入。在CommandAction函数中通过调用tb.getString()和tb.size()获得玩家的输入内容以及输入内容的长度。,第四章高级用户界面,高级用户界面List类,List对象即列表对象。在List对象中可以加入多个文本字符串条目,每个条目还可以带图片当List对象太多超出屏幕时,会自动提供滚动机制(如使用上下移动键)。List类实现了Choice接口。Choice接口中有几个重要方法,如:intsize();条目的个数intgetSelectedIndex();当前选中的条目booleanisSelected(intindex);某一条目是否选中,第四章高级用户界面,高级用户界面List类,List的构造方法:List(Stringtitle,intlistType)List(Stringtitle,intlisttype,StringstringElements,ImageimageElements)List对象的多个条目中,由于其表现方式的不同,可以有三种类型(listType):Choice.EXCLUSIVE单选方式Choice.MULTIPLE多选方式Choice.IMPLICIT隐含方式.注:使用Choice.IMPLICIT方式时,用户用select选中某条目,则自动发生命令List.SELECT_COMMAND。,第四章高级用户界面,高级用户界面List类,范例见ExclusiveListMIDlet.java(单选方式的List)代码讲解:本例对单选的List做了详细的描述。Listl=newList(List测试,Choice.EXCLUSIVE)是实例化一个List实例,是单选类型的。通过append函数在List上添加三个选项,其中在添加“苹果”这个选项时多了一个Image:l.append(苹果,img),就是在“苹果”这个选项中添加一个图片,图片的具体用法会在以后的章节中进行讲解。程序在最后调用getSelectedIndex得到被选中的项目的序号,通过调用getString获得该项目的内容。,第四章高级用户界面,高级用户界面List类,范例见MultipleListMIDlet.java(多选方式的List)代码讲解:本例和上节中的例子基本相同,不同之处在于实例化了一个多选的List。,第四章高级用户界面,高级用户界面List类,范例见ImplicitListwithSetCommandMIDlet.java(隐含方式的List)代码讲解:本例和上节中的例子基本相同,不同之处在于实例化了一个多选的List:Listl=newList(List测试,Choice.IMPLICIT);如果用户在List中选择了一个选项,List就会将一个定义为List.SELECT_COMMAND的Command对象传递给commandAction()函数,commandAction()函数将完成对用户选择的选项的相应处理。,第四章高级用户界面,高级用户界面Alert类,警报是一种可以包含文本和图象的普通屏幕,用来警报用户错误或其他异常情况。警报分为模式警报和定时警报。模式警报一直停留在屏幕上,直到用户关闭为止,然后它将返回之前显示的屏幕或者应用程序明确指定的屏幕。需要用户做出选择时会用到这种组件。MIDP实现自动提供关闭模式警报的方法。定时警报只在屏幕上显示一段时间。显示不需要用户确认的提示消息时可以使用这种组件。如果指定的定时警报一次要显示很多内容,那么它会自动变成模式警报。,第四章高级用户界面,高级用户界面Alert类,Alert对象的AlertType,用以辅助Alert类的使用,可以有以下几种:AlertType.ALERM警报AlertType.CONFIRMATION确定AlertType.ERROR错误AlertType.INFO提供信息(Alert用作启动画面(SplashScreen)时,就是这种类型)AlertType.WARNING警告,第四章高级用户界面,高级用户界面Alert类,Alert的构造方法:Alert(Stringtitle)创建Alert对象,指定标题Alert(Stringtitle,StringalertText,ImagealertImage,AlertTypealertType)创建Alert对象,指定标题、内含文字、影像以及类型如果省略图象,标题,文本或警报类型,可以把第二个构造方法中的一个或全部参数设置成null。,第四章高级用户界面,高级用户界面Alert类,范例见AlertTypeMIDlet.java代码讲解:我们可以利用addCommand()函数在Alert里头加入系统菜单项。Alert有的静态成员变量叫作DISMISS_COMMAND。如果Alert本身没有加入任何Command。那么Alert就会用这个静态成员作为惟一的系统菜单项。一旦我们加入了自己的Command,那么这个ISMISS_COMMAND就不会出现,一旦使用removeCommand()删除了所有Alert之中的Co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论