当前位置: 编程技术>移动开发
本页文章导读:
▪JAVAME学习札记(2) JAVAME学习笔记(2)
GameCanvas这个类是LCDUI的Canvas类的子类,为游戏提供了基本的“屏幕”功能。除了从Canvas继承下来的方法外,这个类还提供了游戏专用的功能,如查询当前游戏键状态的能力.........
▪ JAVAME学习札记(3) JAVAME学习笔记(3)
GameCanvas类提供了基本的游戏用户接口。除了从Canvas继承下来的特性(命令,输入事件等)以外,它还提供了专门针对游戏的功能,比如后备屏幕缓冲和键盘状态查询的能.........
▪ MIDP3.0的新增特征介绍 MIDP3.0的新增特性介绍
1. LIBletLIBlet是一种类似与ActiveX之类的组件技术,以独立的jar文件存在,内部可以包含classes以及资源文件,可以和MIDlet一样通过OTA下载,一旦下载到手机.........
[1]JAVAME学习札记(2)
来源: 互联网 发布时间: 2014-02-18
JAVAME学习笔记(2)
GameCanvas
这个类是LCDUI的Canvas类的子类,为游戏提供了基本的“屏幕”功能。除了从Canvas继承下来的方法外,这个类还提供了游戏专用的功能,如查询当前游戏键状态的能力,同步图像输出;这些功能简化了游戏开发并提高了性能。
Layer
Layer类代表游戏中的一个可视化元素,例如Sprite或TiledLayer是它的子类;这个抽象类搭好了层(Layer)的基本框架并提供了一些基本的属性,如位置,大小,可视与否。出于优化的考虑,不允许直接产生Layer的子类(不能包外继承)。
LayerManager
对于有着许多Layer的游戏而言,LayerManager通过实现分层次的自动渲染,从而简化了游戏开发。它允许开发者设置一个可视窗口(View Window),表示用户在游戏中可见的窗口; LayerManager自动渲染游戏中的Layer,从而实现期望的视图效果。
Sprite
Sprite又称“精灵”,也是一种Layer,可以显示一帧或多帧的连续图像。但所有的帧都是相同大小的,并且由一个Image对象提供。Sprite通过循环显示每一帧,可以实现任意顺序的动画;Sprite类还提供了许多变换(翻转和旋转)模式和碰撞检测方法,能大大简化游戏逻辑的实现。
TiledLayer
TiledLayer又称“砖块”,这个类允许开发者在不必使用非常大的Image对象的情况下创建一个大的图像内容。TiledLayer有许多单元格构成,每个单元格能显示由一个单一Image对象提供的一组贴图中的某一个贴图。单元格也能被动画贴图填充,动画贴图的内容能非常迅速地变化;这个功能对于动画显示非常大的一组单元格非常有用,例如一个充满水的动态区域。
在游戏中,某些方法如果改变了Layer,LayerManager,Sprite和TiledLayer对象的状态,通常并不能立刻显示出视觉变化。因为这些状态仅仅存储在对象里,只有当随后调用我们自己的paint()方法时才会更新显示。这种模式非常适合游戏程序,因为在一个游戏循环中,一些对象的状态会更新,在每个循环的最后,整个屏幕才会被重绘。基于轮询也是现在视频游戏的基本结构。
GameCanvas
这个类是LCDUI的Canvas类的子类,为游戏提供了基本的“屏幕”功能。除了从Canvas继承下来的方法外,这个类还提供了游戏专用的功能,如查询当前游戏键状态的能力,同步图像输出;这些功能简化了游戏开发并提高了性能。
Layer
Layer类代表游戏中的一个可视化元素,例如Sprite或TiledLayer是它的子类;这个抽象类搭好了层(Layer)的基本框架并提供了一些基本的属性,如位置,大小,可视与否。出于优化的考虑,不允许直接产生Layer的子类(不能包外继承)。
LayerManager
对于有着许多Layer的游戏而言,LayerManager通过实现分层次的自动渲染,从而简化了游戏开发。它允许开发者设置一个可视窗口(View Window),表示用户在游戏中可见的窗口; LayerManager自动渲染游戏中的Layer,从而实现期望的视图效果。
Sprite
Sprite又称“精灵”,也是一种Layer,可以显示一帧或多帧的连续图像。但所有的帧都是相同大小的,并且由一个Image对象提供。Sprite通过循环显示每一帧,可以实现任意顺序的动画;Sprite类还提供了许多变换(翻转和旋转)模式和碰撞检测方法,能大大简化游戏逻辑的实现。
TiledLayer
TiledLayer又称“砖块”,这个类允许开发者在不必使用非常大的Image对象的情况下创建一个大的图像内容。TiledLayer有许多单元格构成,每个单元格能显示由一个单一Image对象提供的一组贴图中的某一个贴图。单元格也能被动画贴图填充,动画贴图的内容能非常迅速地变化;这个功能对于动画显示非常大的一组单元格非常有用,例如一个充满水的动态区域。
在游戏中,某些方法如果改变了Layer,LayerManager,Sprite和TiledLayer对象的状态,通常并不能立刻显示出视觉变化。因为这些状态仅仅存储在对象里,只有当随后调用我们自己的paint()方法时才会更新显示。这种模式非常适合游戏程序,因为在一个游戏循环中,一些对象的状态会更新,在每个循环的最后,整个屏幕才会被重绘。基于轮询也是现在视频游戏的基本结构。
[2] JAVAME学习札记(3)
来源: 互联网 发布时间: 2014-02-18
JAVAME学习笔记(3)
GameCanvas类提供了基本的游戏用户接口。除了从Canvas继承下来的特性(命令,输入事件等)以外,它还提供了专门针对游戏的功能,比如后备屏幕缓冲和键盘状态查询的能力。
每个GameCanvas实例都会有一个为之创建的专用的缓冲区。因为每个GameCanvas实例都会有一个唯一的缓冲区。可以从GameCanvas实例获得其对应的Graphics对象,而且,只有对Graphics对象操作,才会修改缓冲区的内容。外部资源如其他的MIDlet或者系统级的通知都不会导致缓冲区内容被修改。该缓冲区在初始化时被填充为白色。
缓冲区大小被设置为GameCanvas的最大尺度。然而,当请求填充时,可被填充的区域大小会受限于当前GameCanvas的尺度,一个存在的Ticker,Command等等都会影响到GameCanvas的大小。GameCanvas的当前大小可以通过调用getWidth和getHeight获得。
一个游戏可能提供自己的线程来运行游戏循环。一个典型的循环将检查输入,实现游戏逻辑,然后渲染更新后的用户界面。以下代码演示了一个典型的游戏循环的结构:
// 从后备屏幕缓冲获得Graphics对象
Graphics g = getGraphics();
while (true) {
// 检查用户输入并更新位置,如果有需要
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {
sprite.move(-1, 0);
}
else if ((keyState & RIGHT_PRESSED) != 0) {
sprite.move(1, 0);
}
// 将背景清除成白色
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(), getHeight());
// 绘制Sprite(精灵)
sprite.paint(g);
// 输出后备缓冲区的内容
flushGraphics();
}
GameCanvas类提供了基本的游戏用户接口。除了从Canvas继承下来的特性(命令,输入事件等)以外,它还提供了专门针对游戏的功能,比如后备屏幕缓冲和键盘状态查询的能力。
每个GameCanvas实例都会有一个为之创建的专用的缓冲区。因为每个GameCanvas实例都会有一个唯一的缓冲区。可以从GameCanvas实例获得其对应的Graphics对象,而且,只有对Graphics对象操作,才会修改缓冲区的内容。外部资源如其他的MIDlet或者系统级的通知都不会导致缓冲区内容被修改。该缓冲区在初始化时被填充为白色。
缓冲区大小被设置为GameCanvas的最大尺度。然而,当请求填充时,可被填充的区域大小会受限于当前GameCanvas的尺度,一个存在的Ticker,Command等等都会影响到GameCanvas的大小。GameCanvas的当前大小可以通过调用getWidth和getHeight获得。
一个游戏可能提供自己的线程来运行游戏循环。一个典型的循环将检查输入,实现游戏逻辑,然后渲染更新后的用户界面。以下代码演示了一个典型的游戏循环的结构:
// 从后备屏幕缓冲获得Graphics对象
Graphics g = getGraphics();
while (true) {
// 检查用户输入并更新位置,如果有需要
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {
sprite.move(-1, 0);
}
else if ((keyState & RIGHT_PRESSED) != 0) {
sprite.move(1, 0);
}
// 将背景清除成白色
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(), getHeight());
// 绘制Sprite(精灵)
sprite.paint(g);
// 输出后备缓冲区的内容
flushGraphics();
}
[3] MIDP3.0的新增特征介绍
来源: 互联网 发布时间: 2014-02-18
MIDP3.0的新增特性介绍
1. LIBlet
LIBlet是一种类似与ActiveX之类的组件技术,以独立的jar文件存在,内部可以包含classes以及资源文件,可以和MIDlet一样通过OTA下载,一旦下载到手机中就可以象使用系统API一样来进行使用。考虑到安全的缘故,LIBlet不允许执行外部的程序,还可以对LIBlet进行数字签名。
2. 支持RMS内部交换文件
RMS内部交换文件包含一个或者是多个记录集(RecordStore),可以以独立文件下载或者是包含在jar文件中。
该文件的后缀名是rms,为了方便数据的交换,该文件必须符合特定的数据格式,在规范中定义了该文件的详细格式。
3. MIDlet更新
通过安装一个特定的MIDlet套件来实现MIDlet程序的更新,手机必须支持用户确认安装,并且在本机安装的版本比较新时给出用户提示。
关于更新的信息放在设备识别和请求头信息中。
4. 基于CLDC1.1
5. 支持IPv6
可以通过在jad文件中设置“MIDlet-use-IP-Version”来设置支持IPv6。例如:
MIDlet-use-IP-Version = 6
6. 指定本地网络接口
可以指定手机使用哪个本地网络接口。但是该功能还不确定。
7. MIDlet内部交换协议(IMC)
两个运行在不同执行环境下的MIDlet程序可以通过IMC协议进行通讯。IMC是一种类似于socket的低层协议,分为客户端连接和服务器端连接。
8. 增加的类
a) DisplayListener
监听Display对象状态改变
b) AnimatedImage
动画实现
c) FileSelector
新增Screen界面,实现类似Windows上的打开对话框功能
d) FormLayoutPolicy
支持Form布局格式
e) MenuCommand
菜单按钮,支持多级菜单。
f) TabbedPane
支持属性页格式的高级界面。
g) LIBlet
支持软件组件
9. 支持程序支持的最大屏幕尺寸和最小屏幕尺寸
通过jad文件中MIDlet-Minimum-Canvas-Size和MIDlet-Maximum-Canvas-Size属性进行指定,安装时将进行校验,不符合要求的无法安装。
10. 包javax.microedition.event
为应用程序和应用程序之间的通讯提供支持。
更多更详细的信息可以参看MIDP3.0的规范文档。
1. LIBlet
LIBlet是一种类似与ActiveX之类的组件技术,以独立的jar文件存在,内部可以包含classes以及资源文件,可以和MIDlet一样通过OTA下载,一旦下载到手机中就可以象使用系统API一样来进行使用。考虑到安全的缘故,LIBlet不允许执行外部的程序,还可以对LIBlet进行数字签名。
2. 支持RMS内部交换文件
RMS内部交换文件包含一个或者是多个记录集(RecordStore),可以以独立文件下载或者是包含在jar文件中。
该文件的后缀名是rms,为了方便数据的交换,该文件必须符合特定的数据格式,在规范中定义了该文件的详细格式。
3. MIDlet更新
通过安装一个特定的MIDlet套件来实现MIDlet程序的更新,手机必须支持用户确认安装,并且在本机安装的版本比较新时给出用户提示。
关于更新的信息放在设备识别和请求头信息中。
4. 基于CLDC1.1
5. 支持IPv6
可以通过在jad文件中设置“MIDlet-use-IP-Version”来设置支持IPv6。例如:
MIDlet-use-IP-Version = 6
6. 指定本地网络接口
可以指定手机使用哪个本地网络接口。但是该功能还不确定。
7. MIDlet内部交换协议(IMC)
两个运行在不同执行环境下的MIDlet程序可以通过IMC协议进行通讯。IMC是一种类似于socket的低层协议,分为客户端连接和服务器端连接。
8. 增加的类
a) DisplayListener
监听Display对象状态改变
b) AnimatedImage
动画实现
c) FileSelector
新增Screen界面,实现类似Windows上的打开对话框功能
d) FormLayoutPolicy
支持Form布局格式
e) MenuCommand
菜单按钮,支持多级菜单。
f) TabbedPane
支持属性页格式的高级界面。
g) LIBlet
支持软件组件
9. 支持程序支持的最大屏幕尺寸和最小屏幕尺寸
通过jad文件中MIDlet-Minimum-Canvas-Size和MIDlet-Maximum-Canvas-Size属性进行指定,安装时将进行校验,不符合要求的无法安装。
10. 包javax.microedition.event
为应用程序和应用程序之间的通讯提供支持。
更多更详细的信息可以参看MIDP3.0的规范文档。
最新技术文章: