分享
 
 
 

J2ME Game开发笔记(第三辑)

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

文章来源:J2ME开发网

Nokia系统bug两则

1 Nokia7650(V4.46)应用程序目录显示bug

应用程序安装后,打开应用程序目录,显示错误提示:

"程序已关闭 MidpUi USER9",应用程序目录无法进入。

分析后发现,原来是新安装的应用程序没有在mainfest.mf中的

midlet-1属性中指定应用程序图标,导致程序目录无法显示图标。

在我所见到NokiaS40机器上和NGageQD上,如果图标没指定或指定了但

不存在,将显示默认的图标。

此bug对于其它版本的7650或者其他机型是否存在尚不得知。

解决方法:使用seleQ将7650c:\system\midp中刚安装的程序目录删掉,即可正常进入应用程序目录。

在应用中使用自己的应用程序图标,并正确设置,以避免让用户遭遇到此bug。

2 Nokia3100(v3.10)游戏目录振动设置与应用程序中使用振动冲突的bug

在Nokia3100等机型中,提供了一个游戏目录管理游戏类应用。该目录

可以设置目录中的游戏运行时是否发声,振动和使用网络。对于

Nokia3100(V3.10)如果将振动设置关掉,而在应用程序中使用了振动,则

会产生一个异常。此bug是在10个月之前发现的,记不清是哪个异常了。

此bug对于其它版本的3100或者其他机型是否存在尚不得知。

解决方法:在应用程序中使用振动的地方增加异常处理。

----------------------------------

同时多处异常

程序出现exception时,在一个外包函数处捕获到了,显示为函数a出现异常,然后去a中捕获却没捕获成功,但是仍然发生了异常.

原来是外包函数中调用的另一个函数b也产生了同样的异常.

同时多处异常-小心!

----------------------------------

Eclipse Tips

1.在工具条上有个文本形象的按钮"show source of selected element only".当编辑类的某个成员(方法或域)时,按下这个按钮,则当前窗口会只显示你正在编辑的类成员.再按一下则恢复.

2.显示java文件行号.菜单中选择Window->Preferences打开Preferences窗口后选择Java->Editor,在右边的选项中选中Show line numbers.

显示非java文件行号.在Preferences窗口中选择Workbench->Editors->Text Editor,同样右边的选项中选中Show line numbers.

3.编辑代码时,按ctrl+/可以注释当前行或选中的多行代码;按Atrl+/可以显示自动完成代码的提示。

4.选中代码,按 ctrl+shift+F 格式化代码

5.输入syso,按atrl+/可出来 System.out.println("") ;

-----------------------------------

NokiaS60 UI API bug

1 旋转后,并以clip的方式向缓冲上贴图,clip无效

2 无法创建透明muttable Image

此两点,致命伤,带来许多不变

-----------------------------------

J2ME中使用随机数

产生0~n之间的随机数

(ran.nextInt()>>>1)%n

(ran.nextInt()&0x7FFFFFFF)%n

产生-n~0之间的随机数

(ran.nextInt() | 0x80000000 )%n

-----------------------------------

NokiaS60模拟器异常退出

症状:模拟器自动关闭,没提示任何错误

原因:使用了Nokia UI API中的灯光或振动控制,而Nokia S60部分机型和对应的模拟器不支持这两个特性.

------------------------------------

检测机型,总是有点用处的

在J2ME开发中,往往遇到根据不同机型做不同事情的情况,比如Nokia3650的键盘比较特殊,Nokia7650不支持mmapi,所以需要获得机型信息。

下面是一段简单的代码

public static void checkPlatform()

{

String platform = System.getProperty("microedition.platform") ;

String tmp = null ;

if(platform.length()==9)

tmp = platform ;

else if(platform.length()>9){

tmp = platform.substring(0,9) ;

}

if(tmp!=null){

if(tmp.equals("Nokia3650")){

is3650 = true ;

}

else if(tmp.equals("Nokia7650")){

is7650 = true ;

}

}

}

获得机型信息还包括版本号等等,所以要截取前面的几个字符比较。

不过得到的机型字符串有时并不保险,如早期的Nokia N-Gage获得得并不是N-Gage,不过3650和7650还是可以的

------------------------------------

J2ME中查表法使用三角函数

CLDC和MIDP都没有提供三角函数,而且CLDC1.0中也没有浮点数,所以我们的选择是查表。使用8位定点数的sin和cos表。下面是wtk自带demo中的代码,只提供了有限的几个角度,实际使用时根据需要细化角度值。

// sines of angles 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, all *256

private static final int[] SINES =

{ 0, 44, 88, 128, 165, 196, 222, 241, 252, 256 };

// angle is in degrees/10, i.e. 0..36 for full circle

private static int sineTimes256(int angle)

{

angle %= 36; // 360 degrees

if (angle <= 9) // 0..90 degrees

{

return SINES[angle];

}

else if (angle <= 18) // 90..180 degrees

{

return SINES[18-angle];

}

else if (angle <= 27) // 180..270 degrees

{

return -SINES[angle-18];

}

else // 270..360 degrees

{

return -SINES[36-angle];

}

}

// angle is in degrees/10, i.e. 0..36 for full circle

private static int cosineTimes256(int angle)

{

return sineTimes256(angle + 9); // i.e. add 90 degrees

}

---------------------------------------

Nokia S60 IO操作内存泄漏不可不察

Nokia7650,3650

游戏运行过程中,有时会出现“存储已满”的对话框,出现的位置不固定

游戏运行过程中,有时出现“应用程序错误 NullPointerExcept”,“程序已关闭 MidpUi”的对话框

游戏运行过程中,有时会出现“程序已关闭 MidpUi ViewSrv 9”的对话框,出现的位置不固定

其实这个问题是由S60的getResourceAsStream方法内存泄漏的bug引起的,由于每次切换地图时io操作都要读取大量数据,内存泄漏积累到一定程度就引起了“存储已满”,白屏,死机,进而会引起null pointer异常等。解决方法是尽量减少io操作的次数。如果内存够大就一次将资源读入。

----------------------------------------

初次使用JBuilder 7-若干小问题

1 MobileSet问题

JBuilder7需另外安装MobileSet, Mobileset自带了一个WTK. 如果不安装MobileSet,JB7配置JDK时不能自动识别WTK,安装MobileSet后,可以通过配置JDK的方法加入新的WTK

2 资源文件问题

JBuilder的所有源文件都应该放在source path中,可以在工程属性中设置source path,资源文件也一样。既可以和源文件放在一个source path(即文件夹)中,也可以放在另外的source path中。需要注意的是,JBuilder只默认识别一定数量的后缀,如png,如果你使用了其他后缀的资源文件,如dat,bin,需要先把该文件通过add files加入到工程中,选择文件属性,设置为copy,这样该后缀的文件就被识别为资源文件了。

3 光标不对问题

最简单的办法-改字体,我改成了第一种字体(JB7中),感觉和默认字体没什么不同。至于这个问题的根本解决方法网上有文论述。

4 鼠标滚轮无效问题

据说这个问题只在JB7和以下版本中存在,原因是只有J2SDK1.4以上才支持滚轮,所以需要将JB7的JDK改成1.4的. 方法是修改JBuilder7\bin\jdk.config文件,将javapath和addpath两行修改,例如:

# javapath ../jdk1.3.1/jre/bin/hotspot/jvm.dll

javapath Y:\j2sdk1.4.2\jre\bin\server\jvm.dll

# addpath ../jdk1.3.1/lib/tools.jar

addpath Y:\j2sdk1.4.2\lib\tools.jar

-------------------------------------

运行Nokia模拟器的一个注意事项

这是一个老问题了,原来用WTK的时候就有,在WTK中启动Nokia的模拟器,如果先前已经打了包,那么运行的是打包的程序,想当年经常会很郁闷为什么改动了没效果,后来养成一个习惯,将jar装到手机测试后随手删除。

今天用JBuilder的时候又碰到了这个问题,也是Nokia的模拟器,如果已经建立了一个archive,那么Nokia模拟器运行的总是包,呵呵,所以要么将archive从project中remove,要么每次都rebuilder这个archive。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有