??xml version="1.0" encoding="utf-8" standalone="yes"?>
GameCanvas
q个cLCanvascȝ子类,为游戏提供了基本?屏幕"功能。除了从Canvas l承下来的方法外,q个c还提供了游戏专用的功能,如查询当前游戏键状态的能力,同步囑փ输出Q这些功能简化了游戏开发ƈ提高了性能?br>q个cMCanvas cȝ比有两个优点Q?。它拥有屏幕~冲Q?。它可以直接得到讑֤键盘的物理状态?/p>
Layer
Layer cM表游戏中的一个可视化元素,例如Sprite 或TiledLayer 是它的子c;q个抽象cL好了?Layer)的基本框架ƈ提供了一些基本的属?如位|?大小,可视与否。出于优化的考虑,不允许直接生Layer 的子c?不能包外l承)?/p>
LayerManager
对于有着许多Layer 的游戏而言,LayerManager 通过实现分层ơ的自动渲染,从而简化了游戏开发。它允许开发者设|一个可视窗?View Window),表示用户在游戏中可见的窗口;LayerManager 自动渲染游戏中的Layer,从而实现期望的视图效果?br>LayerManager负责理Layer对象Qƈ且按照指定的序M们?/p>
Sprite
Sprite 又称“_”,也是一ULayer,可以昄一帧或多的连l图像。但所有的帧都是相同大的,q且׃个Image 对象提供。Sprite 通过循环昄每一?可以实现L序的动画;Sprite c还提供了许多变?{和旋?模式和碰撞检方?能大大简化游戏逻辑的实现?/p>
TiledLayer
TiledLayer 又称“砖块”,q个cd许开发者在不必使用非常大的Image对象的情况下创徏一个大的图像内宏VTiledLayer 有许多单元格构成,每个单元D昄׃个单一Image 对象提供的一l脓(chung)图中的某一个脓(chung)图。单元格也能被动画脓(chung)囑֡?动画贴图的内容能非常q速地变化Q这个功能对于动LC非常大的一l单元格非常有用,例如一个充满水的动态区域?br>TiledLayer更多的被用来创徏背景Q比如赛道或者其他更大的区域.
1. TextBox是一个容器类型的对象(?/span>Form的性质一?/span>)?/span>
TextBoxcȝ构造函?/span>,W一个参数实际上是窗口的名称(因ؓ(f)TextBox是一个容?/span>,?/span>
能是当前屏幕的显C对?/span>),W二个参数是~省?/span>,W三个参数是输入字符的总长度。如果你?/span>
|了文本框的~省?/span>,那么W三个参数必L~省字符的长度。如果第三个参数的值和~省?/span>
W的长度不一?/span>,那么E序q行不成?/span>(~译可以通过)。如果你第二个参数|ؓ(f)null?/span>,?/span>
么第三个参数可以L设?/span>
2. TextField?/span>TextBox有点怼,不过TextBox是多行的,?/span>TextField是单行的。而且TextBo
x是容器类型的对象,但是TextField是项目类型的对象,只能够被容器包含,不能够单独显C?/span>
3. StringItem对象?/span>TextField?/span>DateField对象cM,同样属于目cd的对象。它的作?/span>
是在容器对象中昄一条字W串?/span>
4. ChoiceGroup也是一个项目类型的对象,它代表一个选择列表,它的作用?/span>List对象cM,?/span>
q后者是一个容?/span>,而前者是一个项目?/span>
我们需要特别注?/span>ChoiceGroupcȝ构造函?/span>,它有四个参数,W一个参数是标签,W二个参
数是此选择列表的类?/span>,例如多选还是单选。第三个参数是一个字W串数组,代表每个选项?/span>
标签,W四个选项是一?/span>Imagecd的数l?/span>,代表每个选项前面的小图标
5. Gauge对象是一个项目类型的对象,它的作用是显CZ个进度条。请看下面的源代码?/span>Gaug
ecȝ构造函数的后面两个参数分别是进度条的最大值和初始倹{?/span>
6. Ticker对象是一个项C滚动的信息?/span> Tickercȝcd的对?/span>,它的作用相当于的构造函C有一个参?/span>,那就一个滚动消息栏,在屏q的上方显是需要滚动显C的消息?/span>
Displayable抽象c?/strong>Qjavax.microedition.lcdui.Displayable的子cd以分成两大类Q?br>Canvas和Screen。Canvas属于低囑Ş用户界面lgQScreen属于高囑Ş用户界面lg?br>在同一旉Q只能由唯一一个Canvas或Screencȝ子类出现在屏q上?br>setCurrent()被调用时Q前一画面p取代Q所以要自行保存当前画面?/p>
事g处理Q?/p>
Commandc?br>Displayable对象定义了addCommand()/removeCommand()Ҏ(gu) Tickerc?/strong> 标题 setTitle()/getTitle()?/p>
CommandcM个参数的构造函敎ͼ(x)Command c1=new Command("Back_1",Command.BACK,1);
Commandcd个参数的构造函敎ͼ(x)Command c1=new Command(短命?长命?cd,优先?;
取相应的|(x)getLabel() getLongLabel() getCommandType() getPriority()
八种cdQ?br>BACK ,CANCEL, EXIT, HELP, ITEM ,OK, SCREEN ,STOP
CommandListenerQ事件处理接?/strong>
委托模型(Delegation Model)
setCommandListener()注册事g处理函数?br>commandAction()被调用,当注册事件生时?/p>
跑马灯。Displayable子类都可以加入Ticker。setTicker()/getTicker()?/p>
public Form(String title);
public Form(String title, Item[] items);
Form form = new Form("Choose an Item");
public int append(Image img);
public int append(Item item);
public int append(String str);
public void delete(int itemNum);
public Item get(int itemNum);
public void insert(int itemNum, Item item);
public int set(int itemNum, Item item);
public int size( );
public String getLabel( );
public void setLabel(String s);
public ChoiceGroup(String label, int choiceType);
public ChoiceGroup(String label, int choiceType,String[] stringElements, Image[] imageElements);
public int append(String stringElement, Image imageElement);
public void insert(int index, String stringElement, Image imageElement);
public void set(int index, String stringElement, Image imageElement);
int saveIndex = list.append("save", null);
int deleteIndex = list.append("delete", null);
public void delete(int index);
public String getString(int index);
public Image getImage(int index);
public int getSelectedIndex( )
public boolean isSelected(int index);
public setSelectedIndex(int index, boolean selected);
public int getSelectedFlags(boolean[] selectedArray);
public void setSelectedFlags(boolean[] selectedArray);
ChoiceGroup choices = new ChoiceGroup("Method of payment", Choice.EXCLUSIVE);
choices.append("Visa", null);
choices.append("Master Card", null);
choices.append("Amex", null);
choices.delete(2);
Form form = new Form("Choose one");
form.append(choices);
Display.setCurrent(form);
1. J2ME 实际上是一pd规范的集合,?/span> JCP l织制定相关?/span> Java Specification RequestQ?/span>JSRQƈ发布, MIDP2.0规范?yu)是?/span> JSR118 中制定的
2. J2ME q_是由配置Q?/span>ConfigurationQ和表(ProfileQ构成的配置是提供给最大范围用的最类库集合,在配|中同时包含 Java 虚拟机。简表是针对一pd讑֤提供的开发包集合?/span> 目前Q?/span>J2ME 中有两个最主要的配|,分别?/span> Connected Limited Devices ConfigurationQ?/span>CLDCQ和 Connected Devices ConfigurationQ?/span>CDCQ。随着技术和g讑֤不断发展Q?/span>J2ME 开发网逐步推出Z CDC ?/span>J2ME q_
3. 从上q的标准中我们不隄?/span> CLDC 主要针对那些资源非常受限的设备比如手?/span> PDA双工d机等?/span>CDC主要面对那些家电(sh)产品Q比如机盒、汽车导航系l等。例?/span> Mobile Information Devices ProfileQ?/span>MIDPQ就?/span> CLDC 上层的重要简表?/span>
4. MIDP中定义了一U新的应用程序模?/span> MIDlet?/span>MIDlet 有三个状态,分别?/span> pause active ?/span> destroyed。在启动一?/span>MIDlet的时候,应用理软g?x)首先创Z?/span> MIDlet 实例q得他处于 pause 状态,?/span> startApp()Ҏ(gu)被调用的时?/span>MIDlet q入 active 状态,也就是所说的q行状?/span> 。在active状态调?/span>destroyApp(boolean unconditional)或?/span> pauseApp()Ҏ(gu)可以使得 MIDletq入 destroyed 或?/span>pause状?/span>
|
![]() |
J2ME 开发环境搭?/font> |
|
![]() |
技术文?/font> |
|
在用中国移动的 CMWAP 方式q接|络Ӟ中国Ud?x)将用户的手机号码放在一个名UCؓ(f) x-up-calling-line-id 的头信息中,可以通过d该头信息Q获得用L(fng)手机L(fng)Q具体代码如下:(x)
String usermphone = http.getHeader("x-up-calling-line-id");
其中
http
?/span>
HttpConnction
cd的对象?/span>
J2ME 中用到?/span> Java 基础知识Q?/span>
1?/font> Java 语法基础Q包括基本数据类型、关键字、运符{等
2?/font> 面向对象的思想Q类和对象的概念Q承和多态等{?/font>
3?/font> 异常处理
4?/font> 多线E?/font>
J2ME 中没有用到的 Java 基础知识Q?/span>
1?/font> JDK ?/span> javac ?/span> java 命o(h)的?/span>
2?/font> Java 基础中的很多cd J2ME 中没有,或者类中的Ҏ(gu)做了大量的精。所以徏议在 J2ME 中熟(zhn)类库?/span>
3?/font> Applet ?/span> AWT ?/span> Swing q些知识?/span> J2ME 中根本用不到?/span>