9、CLDC的安全机制要比J2SE更加严格,安全机制主要涉及两个方面。
(1)虚拟机级别安全
(2)应用程序级别安全
10、移动信息设备简表(Mobile Information Device Profile,MIDP)针对移动信
息设备,或者体积较小、能力有限的手持设备,这些设备的共性是具有接口即屏
幕和输入机制。MIDP目标设备的典型例子就是手机。
11、MIDP中的类包:
java.io、java.lang、java.util、应用程序生命周期javax.micorediton.midlet、用户界
面javax.micorediton.lcdui java.micorediton.lcdui.game、持久存储
javax.micorediton.micorediton.rms、网络java.micorediton.io、公开密钥
javax.micorediton.pki、声音媒体javax.micorediton.media
javax.micorediton.media.control
12、MIDlet可能出于以下3种状态:暂停、激活和终止状态
13、MIDlet程序结构:
要编写能运行在手机上的Java MIDlet,则程序必须继承自
javax.micorediton.MIDlet.javax.micorediton.MIDlet类中定义了3个抽象方法。
(1)startApp():该方法表面MIDlet正在从暂停状态向激活状态转换。
(2)pauseApp():当MIDlet从激活状态向暂停状态转换时,该方法被调用。
(3)destroyApp():该方法表明MIDet方法正在被转换为终止状态,它被释放或关
闭MIDlet在生存周期获得的全部资源。
14、Java MIDlet程序至少包含如下框架结构:
import javax..micorediton.MIDlet.*;
public class HelloMIDlet extends MIDlet
{
public HelloMIDlet()
{}
public void startApp()
{}
public void pauseApp()
{}
public void destroyApp(Boolean unconditional)
{}
}
15、startApp()很可能不只是被调用一次,而是每次从停止状态重新回到运行状态
时都会被JAM(Java Application Manager,应用程序控制器)调用,所以只需要被
初始化一次的变量就不适合在startApp()之中初始化,改用构造函数做初始化操作
。
16、一旦MIDlet被JAM载入之后,首先会调用MIDlet中没有参数的构造函数以进
行初始化工作。如果没有再程序中加入任何的构造函数,编译器会自动加入一个
默认的初始化函数。但是如果用户编写了自己的带参数的构造函数,一定要加上
一个没有参数的构造函数,否则MIDlet无法正确的初始化。
17、和MIDlet1.0相比,MIDlet2.0大大加强了对用户界面、多媒体和游戏功能。网
络连接功能的支持。
18、M3G是J2ME的一个可选包,以OpenGL为基础精简版,一共有30个类,运行
在CLDC1.1/MIDP2.0上(必须支持浮点运算)。
19、下面简单介绍一下 M3G 开发包中的类:
类名描述AnimationController
控制动画序列位置、速度等因素.例如能够控制动画应用中灯光的闪光和移动
AnimationTrack
和动画特性中的 KeyframeSequence 关联,是一组使得动画系统能够直接刷新的变
量
Appearance
一系列定义了网格( Mesh )或者精灵( Sprite3D )外观特性的对象
Background
定义了如何清空视角( Viewport ),在保留模式下,或者当显示一个世界( World )时
Camera
一个定义了观察者位置和 3D 到2D 投影角度的场景节点.摄影机总是面对 z 轴的负
半轴( 0 , 0 , -1 )
CompositingMode
外观 Appearance 的组成部分,封装了每个像素的颜色合成属性
Fog
外观 Appearance 的组成部分,封装了雾化的属性
Graphics3D
一个 singleton 类,它能够用来绑定要显示的内容,从而加以显示,所有关于 3D 图形
的绘制都通过 render() 方法完成
Group
一个场景节点,以子节点的形式存储一系列无序节点
Image2D
2D 图形,可以被用来当作纹理、背景或者精灵图片
IndexBuffer
定义了如何为一个几何物体连接顶点
KeyframeSequence
封装了动画数据,例如时间戳和关键帧的顺序.这些顺序决定了特定时刻的动画质量
,并且这些动画数据可以被多个活动物体共享
Light
一个场景节点,用来描绘不同的光源,和材质属性一起决定了物体的颜色
Loader
加载并读取经过串行化的场景节点,从而构成整个场景.从M3G 文件中读取 3D 数
据是创建 3D 场景最方便的方式之一
Material
外观 Appearance 的组成部分,封装了用以计算光照效果的材质属性.其他涉及光照
属性的类有 Light 、 PolygonMode 和VertexBuffer
Mesh
一个场景节点,描绘了一个用多边形构成的 3D 物体.它有 MorphingMesh 和
SkinnedMesh 两个子类
MorphingMesh
一个场景节点, Mesh 类的子类,能够实现顶点的 Mesh 模型
Node
一个定义了所有场景类的抽象类.它有 5 种类型: Camera 、 Mesh 、 Sprite3D 、
Light 、 Group
Object3D
一个定义了能被包含在 World 中的 3D 对象的抽象基类,包含 World 本身、其他场
景节点、动画类、材质类等.除了 Graphics3D 、 Loader 、 RayIntersection 和
Transform 类外都是 Object3D 的子类
PolygonMode
外观 Appearance 的组成部分,封装了前后面的选择、多边形的填充方式、灯光估
计、透视校正和阴影
RayIntersection
存储了一些关于网格 Mesh 和精灵 Sprite3D 的参考,以及一些关于交叉点的信息,无
法从 M3G 档中加载
SkinnedMesh一个场景节点,Mesh类的子类,能够实现够格动画的Mesh模型。
Sprite3D一个场景节点,描述了3D精灵的属性
Texture2D外观(Apperance)的组成部分,封装2D纹理
Transform:一个普通的4*4浮点矩阵,描述了一个翻转变换
Tranformable:2D纹理和节点的抽象基类。定义了操作节点好纹理的普通方法。
TriangleStripArray:用序列数组定义了一组三角形(连续的三角形)。在这个数组
中,前3个顶点定义了一个三角形,每一个顶点和前三个定义了一个新的三角形
。例如(2,0,1,4)定义了(2,0,1)和(0,1,4,)两个三角形
VertexArray:顶点矩阵,定义了顶点的位置、法向量、颜色和纹理坐标
VertexBuffer:顶点缓冲,用来存储一系列的顶点矩阵
World:一个特殊的场景节点,它是包含所有场景的根节点。在一个完整的场景
中,所有的节点直接或者间接地连接World节点。
20、M3G支持两种3D开发模式:
直接模式(immediate mode):在直接模式下,3D模型在程序中创建,非常繁琐
。开发者必须手动渲染每一帧,从而获得较快的速度,当代码繁琐。
保留模式(retained mode):在保留模式下,开发者只需设置好关键帧,M3G提
供一个Loader类,允许直接从一个单一的.m3g文件中读入全部3D场景,剩下的动
画由M3G完成,代码简单,但速度较慢。
M3G允许混合使用两种模式。
21、手机终端的3D绘制性能按照单位时间按内所能绘制的像素来度量,也就是说
10个小多边形的绘制时间可能比5个大多边性的绘制的时间短。
22、设计3D手机游戏需要注意的地方:
(1)资源管理
(2)地图管理
(3)3D模型管理
(4)2D图形设计
(5)2D画面的设计
(6)图形力量
(7)玩家角色
(8)碰撞检测
(9)武器设计
(10)游戏算法
(11)人性化