




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本学期学习的主要内容,体系结构介绍和环境配置 MIDP应用程序开发-MIDlet生命周期 Command命令按钮及按钮事件处理机制 高级用户界面 表单元素 低级用户界面Canvas及事件处理 游戏编程 RMS,Java ME 体系结构,底层操作系统,Java运行环境,配置(CLDC,CDC),描述( MIDP ),可选包,Java ME开发环境的搭建,MIDlet生命周期,用户界面接口结构,Display,Displayable,Screen,Canvas,Alert,List,TextBox,Form,Item,ChoiceGroup,DateField,Gauge,ImageItem,TextField,StringItem,Command按钮,Command构造函数: 其中,有三个参数: label:字符串,表示按钮上的标题; commandType:整型,表示按钮类型; priority:按钮出现的优先级,为整数,数字越小,优先级越高,越出现在菜单中靠前的位置,命令按钮的种类,将按钮添加到界面上,javax.microedition.lcdui.Displayable中有如下方法可以进行命令按钮的维护:,1:添加命令按钮: public void addCommand(Command cmd) 2:移除命令按钮: public void removeCommand(Command cmd),按钮事件编写步骤,1:编写事件处理类,实现javax.microedition.lcdui.CommandListener; 实现一个接口,需要将接口里面的函数进行重写。javax.microedition.lcdui.CommandListener有一个函数: 此函数里面有两个参数: 第一个参数是表示发出事件的Command按钮 第二个参数是表示发出事件的Diaplayable对象。,按钮事件编写步骤,2:重写CommandListener里面的commandAction方法,编写事件响应代码; 如下代码: 表示将Command按钮所在的Displayable标题改为“按钮被选择”。,public void commandAction(Command c,Displayable d) d.setTitle(“按钮被选择“); ,按钮事件编写步骤,3:将事件源和事件响应对象绑定。 将Displayable对象和CommandListener对象绑定的函数:,高级用户界面基本知识,允许用户输入和编辑文本的屏幕,显示一组选项的屏幕,用户可以在这些选项中选择一个或者多个选项。,类似消息框,勇于向用户提示一些警告,错误和确认信息。,表单,用来容纳其它Item组件,如图片,进度条,静态显示文本等。,List类,打开文档,找到javax.microedition.lcdui.List,构造方法有2个。 构造方法1: public List(String title, int listType) 第一个参数是给List一个字符串标题; 第二个参数决定了List的类型,为静态变量定义的整数,可以有3种选择。,List类,List. EXCLUSIVE:互斥,表示只能选择一个选项。 List. IMPLICIT:另一种互斥,光标定位到该选项,就表示该项被选择。当List的类型为List.IMPLICIT时,光标移动到某项,然后按下选择键,系统能够自动触发事件。List内置了一个隐含的Command对象:List.SELECT_COMMAND List.MULTIPLE:多选。,List类,使用append方法添加列表项。 public int append(String stringPart, Image imagePart) 第一个参数是项目的字符串内容,也就是选项标题; 第二个参数是项目的图片对象,如果为null,表示不要图片。 注意:选项添加之后,每个选项都有一个编号,从0开始。,List类中的常用方法,在单选情况下,得到被选项的序号: public int getSelectedIndex() 在多选情况下,得到各项是否被选的boolean数组: public int getSelectedFlags(boolean selectedArray_return),TextBox类,参数1是给TextBox指定一个标题,为字符串; 参数2决定了TextBox内的初始内容。如果想要出现一个没有任何内容的空文本框,此参数可以用空字符串; 参数3确定了TextBox内可以输入的最大的字符数,比如可以写255,表示文本框内可以输入的最大字符数为255;,public TextBox(String title, String text, int maxSize, int constraints),TextBox是可以允许用户编辑文本的屏幕对象。,Alert类,构造方法1: public Alert(String title) 该函数中的参数表示给提示界面设置一个标题。 构造方法2: public Alert(String title, String alertText, Image alertImage, AlertType alertType) 参数1表示界面的标题,和前一个构造函数相同; 参数2表示界面上的提示信息。 参数3表示界面上的图片。 参数4表示提示界面的类型。,Alert类的内置按钮,Alert类内有一个静态成员: public static final Command DISMISS_COMMAND 该按钮有如下特点: 按钮类型:Command.OK,标题为“完成”,优先级为0; 只有在提示框永不自动消失的情况下才出现。,Alert类的常用方法,自定义提示框消失的时间 public void setTimeout(int time) 参数是一个整数,以毫秒为单位,Alert的下一个显示屏幕,Display类的另一个setCurrent方法。 public void setCurrent(Alert alert, Displayable nextDisplayable) 第一个参数是提示界面对象,第二个参数是提示界面消失之后将要出现的下一个界面。,Ticker,Ticker即滚动文字,是一个出现在标题上方的图形组件,可以用来向用户滚动信息。 Ticker类构造函数只有一个: public Ticker(String str) 参数表示给滚动条设置状态文本。 打开Displayable文档,有个方法可给Displayable类及子类设置滚动条: public void setTicker(Ticker ticker),Form及表单元素,表单元素,javax.microedition.lcdui.Item javax.microedition.lcdui.ChoiceGroup javax.microedition.lcdui.CustomItem javax.microedition.lcdui.DateField javax.microedition.lcdui.Gauge javax.microedition.lcdui.ImageItem javax.microedition.lcdui.Spacer javax.microedition.lcdui.StringItem javax.microedition.lcdui.TextField,StringItem类,StringItem对象是一种可以容纳字符串的文本组件项目,用户不能编辑该组件包含的字符串。 StringItem的构造方法: StringItem(String label,String contents) 创建新的字符串Item,指定标签和内容(等同于下面构造方法的PLAIN类型),StringItem类,StringItem(String label,String contents,int appearanceMode) 创建新的字符串Item,指定标签、内容和外观类型。 参数“appearanceMode”指定控件显示的类型,它共有3个类型,如下所示: (1) StringItem.PLAIN类型:默认类型 (2) StringItem.HYPERLINK类型:超级链接类型 (3) StringItem.BUTTON类型:图像按钮类型,setDefaultCommand(Command cmd)方法!,ChoiceGroup类,ChoiceGroup构造函数有2个: 1:public ChoiceGroup(String label,int choiceType) 参数1是给ChoiceGroup一个标题,是字符串; 参数2决定了ChoiceGroup的类型,为静态变量定义的整数。 参数2可以有3种选择,代表了ChoiceGroup的3种类型。,ChoiceGroup类,ChoiceGroup.EXCLUSIVE:单选风格 ChoiceGroup.MULTIPLE:复选风格 ChoiceGroup.POPUP:下拉菜单风格,ChoiceGroup类,2:public ChoiceGroup(String label, int choiceType, String stringElements, Image imageElements) 参数1和参数2的意义和前面一个构造函数相同。参数3是一个字符串数组,确定下拉菜单内的选项;参数4是一个图片数组,确定下拉菜单内各个选项前的图片。如果不要图片,则用null表示。,ChoiceGroup类的常用方法,往ChoiceGroup上添加一个选项: public int append(String stringPart,Image imagePart) 删除某一个选项,后面的项前移: public void delete(int elementNum) 删除全部选项: public void deleteAll(),ChoiceGroup类的常用方法,判断某项是否被选中: public boolean isSelected(int elementNum) 在单选的情况下,得到被选项的序号 public int getSelectedIndex() 在多选的情况下,得到各项是否被选的boolean数组: public int getSelectedFlags(boolean selectedArray_return),DateField类,DateField构造函数有2个: public DateField(String label,int mode) 参数1给定DateField一个标题; 参数2决定了DateField的风格。 DataField.DATE:只显示或修改日期。 DataField.TIME:只显示或修改日期。 DataField.DATE_TIME:只显示或修改日期时间。,DateField类,另一个构造函数: public DateField(String label, int mode, TimeZone timeZone) 其中,前两个参数与第一个构造函数相同,第三个参数是设置一个时区。,TextField类,TextField的构造方法: public TextField(String label,String text,int maxSize,int constraints) 其中参数“label”设置了控件的标题,参数“text”设置了默认显示的内容; 参数“maxSize”指定了控制能够容纳的最大字符数,如果超过指定的最大字符数则抛出异常。 参数“constraints”指定了显示内容的限制属性,TextField控件与TextBox中的限制属性是一样的。,Gauge类,构造函数有1个: public Gauge(String label, boolean interactive, int maxValue, int initialValue) 参数1是给Gauge一个标题; 参数2决定了Gauge的值是否可编辑,如果为true,表示可以编辑,如果为false,表示不可编辑; 参数3指定进度条的最大值; 参数4指定进度条显示的初始值,必须在0到maxValue之间。,Gauge和Alert绑定,Alert类中有一个方法: 将Alert提示框和一个进度条绑定: public void setIndicator(Gauge indicator) 得到和提示框绑定在一起的进度条: public Gauge getIndicator(),Gauge和Alert绑定,要想让一个进度条绑定到提示框,需要满足以下条件: 进度条的标题为null; 进度条不可编辑; 进度条的大小和布局默认,并且不属于其它容器,也没有响应事件。 不能加入Command,设置当前Item组件,在Display类中有一个函数: public void setCurrentItem(Item item) 当界面上有多个Item时,可以利用这个函数来设置被激活的那个Item。不过要注意,在设置激活的那个Item时,一定要保证它已经被添加到Form上了。,ItemCommand事件,ItemCommand事件也是利用监听机制进行实现的,具体编写步骤如下: 1:编写事件处理类,实现javax.microedition.lcdui. ItemCommandListener; 实现一个接口,需要将接口里面的函数进行重写,ItemCommandListener有一个函数: 第一个参数是表示发出事件的Command按钮; 第二个参数是表示Command按钮发出事件时,和其绑定的Item对象。,ItemCommand事件,2:重写ItemCommandListener中的commandAction方法,编写事件响应代码; 3:将事件源和事件响应对象绑定。 Item类中有如下函数将Item和Listener绑定:,ItemState事件,ItemState事件也是利用监听机制进行实现的,具体编写步骤如下: 1:编写事件处理类,实现javax.microedition.lcdui. ItemStateListener; 重写函数: 此函数里面参数表示发出事件(状态改变)的Item对象; 2:重写ItemStateListener中的itemStateChanged方法,编写事件响应代码;,ItemState事件,3:将事件源和事件响应对象绑定。 Item根本没有能够将Item对象和ItemStateListener对象绑定的函数。因为itemStateChanged方法里面已经能够通过item参数确定事件源,因此我们要做的不是将Item和Listener绑定,而是将Item所在的Form和Listener绑定。Form有一个函数:,低级用户界面,低级API包括两个部分: Canvas类:画布类,在其上可以进行图形操作,同时它也是低级事件的接收者; Graphics类:绘图类,可以用来提供文本和图像,并且能够实现绘制和填充图形。,在Canvas类中,有如下重要成员方法: 1: protected abstract void paint(Graphics g) 该方法是抽象方法,如果扩展了Canvas类,就必须对paint方法进行重写。 该方法指定了如何在屏幕上绘制自定义图形,该函数里面可以包含画图的代码。 注意,该方法是在界面出现时自动调用的!,Canvas类,Canvas类,重画的三种方法: repaint():调用paint()方法,异步方法。 serviceRepaints():堵塞当前线程,使repaint和paint同步。 callSerially(Runnable r):实现paint()和repaint()方法同步。等到队列中的其他调用都返回后才执行。Display类的方法。,Graphics类,Graphics类提供简单的绘制功能,有以下三类: 绘制文本:可以使用设备所支持的字体绘制指定的字符串,设置字体,颜色,线型 绘制二维几何图形:可以绘制包括直线,矩形,圆弧等简单的二维几何图形。 绘制图像:可以从图像文件中绘制不可变图像,也可以从缓存中绘制可变图像。 图形的剪裁:public void setClip(int x, int y, int width, int height):定义剪裁区域。 图形的卷动设计: public void translate(int x, int y):该函数将原坐标系的(x,y)作为新坐标系的原点。,按键事件,Canvas类定义了下列按键事件: protected void keyPressed(int keyCode) 当按键被按下时调用; protected void keyReleased(int keyCode) 当按键被释放时调用; protected void keyRepeated(int keyCode) 当按键一直按下时调用。,指针事件,1:当指针按下的时候,自动调用: protected void pointerPressed(int x, int y) 2:当指针释放的时候,自动调用: protected void pointerReleased(int x, int y) 3:当指针拖动的时候,自动调用: protected void pointerDragged(int x, int y) 在这三个函数中都有两个整型参数,表示指针当前的坐标位置,当在某个位置点击指针时,这两个参数就被赋值为位置坐标。,设计流程,创建一个Midlet手机应用程序,创建一个Display手机屏幕对象,创建一个画布子类的对象,将该画布对象添加到手机屏幕上,创建一个该画布上的画笔对象,利用画笔对象的绘图方法绘图,游戏画布,GameCanvas类构造方法有1个: Protected GameCanvas(boolean suppressKeyEvents) GameCanvas类的构造方法里有一个boolean参数。,GameCanvas类之构造方法,这个参数的意义是: 可以确定特殊键(上下左右键和选择键 以及键盘上的1、3、7、9键)是否被禁用,如果为true,表示禁用,如果为false,表示不禁用。,public int getKeyStates() 该函数在特殊键被禁用时,可以得到特殊当前被按下的键的状态。 这样虽然禁用了特殊键,但通过getKeyStates函数,反而解放了特殊键(上下左右键和选择键以及键盘上的1、3、7、9键),而屏蔽了其他键,让游戏中的键盘判断能够很好地移植到线程中去执行。,GameCanvas类之构造方法,一般情况下,可以用如下方法查询某个键是否被按下: 方法1:if(this.getKeyStates()=某个返回值); 如下代码:判断“1”键是否被按下。,if(this.getKeyStates()=512) /或者 if(this.getKeyStates()= GameCanvas.GAME_A_PRESSED),游戏画布之键盘策略,方法2:if(this.getKeyStates()&某个返回值)!=0)。 如下代码:判断“1”键是否被按下。,if(this.getKeyStates()&512)!=0) /或者 if(this.getKeyStates()& GameCanvas.GAME_A_PRESSED)!=0),游戏画布之键盘策略,游戏设计-Sprite,图层Layer Sprite Sprite的创建: public Sprite(Image image) Sprite的旋转:public void setTransform(int transform) Sprite的碰撞检测:public final boolean collidesWith(Sprite s,Boolean pixelLevel),游戏设计-Sprite,带动画的Sprite: public Sprite(Image i, int frameWidth, int frameHeight) public void setFrameSequence(int sequence) public void nextFrame(),游戏设计-TiledLayer类,地图的切割和填充 精灵与地图的碰撞检测,public TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight),图层管理器的使用步骤,Step1:创建图层管理器对象 Step2:将各图层添加到图层管理器对象中 public void append(Layer l) Step3:将图层管理器加到画布上,图层管理器的可视窗口机制,可视窗口控制可视区域的大小及其在LayerManager坐标系统中的位置。改变可视窗口的位置可以实现上下或左右滚动屏幕的效果。 该函数表示在LayerManager中所有图层上,只设置其左上角为(x,y),宽度为width,高度为height的矩形可视。,记录存储的基本操作,记录存储的管理 打开 public static RecordStore openRec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代发工资活动方案
- 代笔活动策划方案
- 以身说法活动方案
- 企业上云活动方案
- TJSQA-温室气体 产品碳足迹量化方法与要求 砌体材料产品编制说明
- 企业上网绘画活动方案
- 企业代发活动方案
- 企业公司初步策划方案
- 企业冬至活动方案
- 贵州省铜仁市沿河县2022-2023学年五年级下学期数学期末试卷(含答案)
- 2024年资格考试-注册可靠性工程师考试近5年真题附答案
- 智能汽车测控技术 课件 第3章-第3讲 激光雷达
- 湖南能源集团招聘笔试题库2024
- 《塑料门窗工程技术规程》JGJ103-2008
- JGJ312-2013 医疗建筑电气设计规范
- 三字经(原版及改版后的注解)
- 基于PLC的啤酒发酵自动控制系统
- 环境保护与节能降耗制度
- 合作协议(国外开矿甲乙双方合同范本)
- 手术室-标准侧卧位摆放
- 线性代数智慧树知到期末考试答案章节答案2024年广西师范大学
评论
0/150
提交评论