选择显示字体大小

j2me game开发笔记(第二辑)

j2me game开发笔记 (第二辑)

整理近期的一些blog,包括nokias60,motorola,eclipse的一些内容

nokia s60的几个问题

1. 不能每帧调用 system.gc(),否则严重降低fps
2. nokia s60机器的不同机型对于translate 和 setclip的处理不一样。在nokia n-gage qd等机型中,setclip是相对于translate以后的坐标计算的,而在nokia 6600,6670等机型中,setclip不受translate的影响,永远只相对于屏幕左上角(0,0)点计算。所以如果在nokia6670中,使用先translate再setclip的方法画子图,则会出现错误。为了统一代码,在nokia s60中不要使用translate,即使用,两次translate之间不要进行setclip.修改后的画子图函数为:

public static void drawsubimg(graphics g,image img,int x,int y,int sx,int sy,int swidth,int sheight)
{
  g.setclip(x,y,swidth,sheight);  
  g.drawimage(img,x-sx,y-sy,glt) ;
  g.setclip(0,0,width,height) ;
}


3. 部分nokia机型(6600,6670等)退出后报错null pointer exception的解决方法
不要在在主while循环中调用destroyapp,而改成检测一个标志,退出主循环后再调用destroyapp
boolean exit ;
...
while(!exit){
...
  if(...){
    exit = true ;
  }
...
}

destroyapp(true);

注:可在destroyapp内部调用notifydestroyed

nokia"不能运行应用程序"错误新解

    nokia手机运行j2me程序的时候出现“不能运行应用程序”的错误,一般都是内存不足引起的,但今天遇到这样的错误,却发现是另一个原因。即当使用nokia的ui api,directgraphics的drawimage时,如果旋转参数设置不当,也会出现“不能运行应用程序”的错误。

eclipse集成motorola模拟器

eclipse的菜单/工具条中选择run->external tools,打开面板后,选择program,然后new一个新的配置
1 在location中填入moto模拟器的路径,如:c:\program files\motorola\sdk v4.2 for j2me\emulatora.1\bin\emujava.exe,moto的不同模拟器支持n种不同机型,需要看moto sdk的文档才知道。
2 在arguments里填入执行的参数,包括jad路径,模拟器使用的机型。如:"${project_loc}\deployed\${project_name}.jad" -devicefile resources\v600.props
我是让模拟器执行deployed里面的jad/jar,${project_loc}是工程路径,${project_name}是工程名。这里选择的机型是v600.

说明:这种方法的局限在于只能执行jar,所以每次运行前必须打包。实际使用前需要为没种机型配置一个run,由于使用了通配参数,所以所有的工程都可以使用一个配置

motorola手机j2me应用问题

1 应用程序图标
  必须在jad 文件midlet-icon属性中指定图标文件,midlet-1中指定的图标无效
  moto v系列图标大小应为15*15,其他尺寸无法显示。

2 左右软键问题
motorola手机操作系统设定是:右软键确认,左软键取消。所以,我们的程序应该和这个习惯保持一致。

3 key code
moto v的key code不同于其他midp2.0机器
左软键:21
右软键: 22
中键: 20
up: 1
down: 6
left: 2
right: 5

midp2.0 canvas全屏问题

    midp2.0 canvas可以调用setfullscreenmode(true)将canvas设置成全屏,但设置成全屏后新的canvas width & height的获得对于不同手机却并不一样。

1 motov系列
调用setfullscreenmode(true)后,将触发sizechanged事件,此事件从系统接受两个参数,即为canvas全屏后的width & height,通过这个事件可以获得新的宽高。
    protected void sizechanged(int w, int h)
    {
        width = w ;
        height = h ;        
    }
但要注意,此事件并不是同步的,就是说如果你调用了setfullscreenmode(true)之后,立即使用新的width,height,有可能获得错误的结果。

2 se k700
调用setfullscreenmode(true)后,不会触发sizechanged,而是通过getwidth和getheight获得新的宽高。se的setfullscreenmode调用后是立即返回的,所以可以获得正确的width & height

----------
对于其他机型暂时还不了解


百宝箱应用编译打包事宜

1 编译时,设置javac 的target vm为1.1即可通过移动检测。wtk中无法实现。在eclipse中可以在java-compiler-compliance and classfiles中做以下设置:
compiler compliance level: 1.4
generated .class files compatibility: 1.1
source compatibility: 1.3

2 用eclispe打混淆包。但eclipse编写jad中文会出现乱码,所以用wtk编写正确的jad,然后用wtk打包(注意不能覆盖eclispe打的包),这是为了用wtk获得正确的jad和manifest文件。将elcipse打包出的jar解压,用wtk生成的mainifest代替原jar中的mainifest文件,然后用winrar打包(zip格式,可选最大压缩,注意要选择所有的文件后打包,不要将外面的整个目录打包).最后将jad中的jar size改为这个最新的jar的字节数。

另:1. nokia s60,se k700机器中显示的游戏名字为midlet-1中的名字,而nokia40为midlet-name中的名字
    2. 根据sp提供的资料nokia 7650 游戏不能用中文名(其实ngageqd可以)


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons