`
鸟哥哥
  • 浏览: 98260 次
  • 性别: Icon_minigender_1
  • 来自: 梅州兴宁
社区版块
存档分类
最新评论

j2me入门一些问题

阅读更多
不多说,只几个项目遇到的问题。希望能帮助一些网友少走弯路。主要针对主流机器。
1.采用cldc1.0
不细说其他,cldc1.0告诉你,不要使用1.1的浮点数,Math.sin(x)等函数。如果使用了,在一些主流机器上直接不给你安装jar文件,你会很惨。。。。像sin函数等,你可用查表方式,先用工具计算出0-360度的值,并放大1024(左移10位速度快些)写死在程序里,计算时,先放大后缩小方法保证精度:左移10位或者更多(上面的操作),然后计算的话直接根据度数的下标查找到值。运算完再右移10位,保证了一定的精度。应付像台球碰球,射击子弹等知道角度,算路线,基本上足够了。
2.采用midp2.0,1.0用也行,但不推荐了。但绝对不要用2.1
用2.0,但绝不要用GameCanvas,很多机器支持得乱七八糟,Image.createImage(Image i,x,y);也不要用,在nokia一些机器上很不支持,会出白边或者其他底色。Sprite要用,但只用Sprite的翻转参数,类Sprite绝不用。画图时用drawRegion()或者setClip再drawImge(),绝对可靠,两者速度如何,据说差不远,但midp1.0就有的setClip配合drawImage方法相对麻烦些,drawRegion是唯一在midp2.0画图方面比midp1.0爽,并可靠的方法。主流手机对这两个画图的支持还是不错的。但!drawRegion用Sprite的翻转参数做翻转时,在像nokia7610时会非常慢,解决方案是用nokia自带的包。我推荐尽量不用翻转,仅用Sprite.TRANS_NONE,当然,你直接使用0也行,TRANS_NONE的值就是0嘛。呵呵。很多j2me游戏入门的书籍,都介绍了,game包里的GameCanvas,Sprite等,非常不好意思对这些作者和读者讲,这在实际开发中,不用,是废的!
3.j2me游戏面向对象,设计模式等一些非常好的设计方式,在j2me上需要做出取舍
项目中不要太多的类,我搞过一款飞行射击游戏,用了100多个类,发现n73相对好点性能的手机内存都过不去,而且速度慢,后来不断合并类,删减接口,很痛苦。最后在60个类左右终于主流机型都过了,速度也不卡了。不提倡一点oop也不讲做游戏,也不推荐过度设计。有些手机对oop的支持,还是很有问题的:
interface A定义方法b();abstract class C implements A;C类体上没重申明这abstarct b()方法,然后可实例化的类class D extends c,把D转成C然后调用b方法,这绝是没问题的。可是在nokia7610上你这样搞,它会抛出方法没找到的异常(no such method be found)。当年,找到这个bug费好大劲。希望有人遇到这问题能得到帮助 
4.混淆器使用
有些代码,不混淆,程序在手机上ok;混淆后不成;有些又相反。同样性能,编译后字节码文件都可能大了,也可能小了。通常情况下是混淆后,包小了,性能高了。如果一旦相反,那么你可以尝试另外个混淆器版本试试。如果有些代码,不混淆,程序在手机上ok;混淆后不成,这种情况。那么,就是混淆器有问题了。别老是查程序,查不出问题的。试过在程序中定义了个变量名叫now来计时,结果发现索爱和lg上运行不行,时间老是不对点,程序没死,不按逻辑跑了。而放在nokia上是ok的哦。后来把now改成其他,所有机器上运行ok.这个混淆器或者机器的变量命名的bug叫你找,你找多久?我找了一天。。。
5.线程使用
j2me中不要超过2个线程,否则像索爱很不稳定,可能这次能跑过,下次不行。尽量不要使用匿名线程,因为很多时候,用了它代码里你一不小心会有好多这些匿名类,失控了.而这些编译后都会成一个类.你最好定义出这个线程类来,这样你心里就会有这个类存在,从而更好的控制线程.提到线程,就提一下音乐播放,具体实现是线程还是什么我没有研究,(播放不会阻塞,会自动播放,不影响运行,看样子应该是个线程吧,所以你要计这个也是线程哦)但在j2me游戏里,音乐是很次很次的,不要播放太大的mid播放音乐,会卡很多,这点很正常,换小点的mid是唯一方法.
6.System.gc()
这方法,你不用,那是最好的.你担心内存不够?调用它?jvm就会额外分出资源去做内存回收,说不定下次它自己又做了呢?这样多出一次,多浪费啊?gc是非常耗资源的!很可能游戏中,一调用System.gc()就会卡一会,令玩家不爽了.甚至有些机器一旦调用System.gc()系统就慢得不行了!只要记得你使用的不用东西,用=null;一下,注意引用的回收,资源自动会回收的,不用担心.毕竟jvm是经过了10几年检验的.很多书籍或者公司面试题都特意用gc做文章.说用什么方法回收资源,gc是什么.我以经验告诉你,那些很 呵呵,不过据说有什么机器,不调System.gc()就不回收的哦.不过,我是没遇到过这种机器滴....
7.会用Runtime去观察内存总量,使用量
8.程序中卡的问题,基本上与循环有关.画图时记得用缓冲.状态更新,处理收入,画图,能在一个循环就一个搞定最好.
9.学会用屏幕做参数来定位置,对移植会很有好处
10.会使用动编,地编,会利用脚本
11.会用预编译
分享到:
评论
1 楼 monya_h 2010-04-14  
请问能描述下GameCanvas在机器上的使用情况嘛。我目前在nokia的机子上,使用GameCanvas的时候感觉还行。如果使用canvas在做动画的时候,感觉不如GameCanvas的好使。

相关推荐

    j2me入门电子书,J2ME入门必备书

    综上所述,"J2ME入门电子书"是初学者踏入移动开发领域的宝贵资源,它将涵盖以上介绍的各种概念和技术,帮助读者逐步掌握J2ME编程,从而开发出能在各种设备上运行的应用。通过阅读这本书,你可以深入了解J2ME的架构、...

    J2ME 入门学习书籍打包下载

    本压缩包提供了两本关于J2ME入门学习的电子书籍:《J2ME基础学习教程》和《j2mejiaocheng》。以下是对这两本书籍中可能包含的知识点的详细说明: 1. **J2ME架构**: - KVM(K Virtual Machine):J2ME的虚拟机,...

    J2ME开发入门(新)

    **J2ME开发入门** Java 2 Micro Edition (J2ME) 是Java平台的一个子集,主要用于嵌入式系统和移动设备,如早期的智能手机、功能手机和家用电器等。作为一个初学者,理解J2ME的基本概念和技术是至关重要的。 **1. ...

    J2ME从入门到精通

    **J2ME从入门到精通** Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式系统和移动设备,如早期的智能手机、电视盒和家用电器。本教程将带你逐步深入J2ME的世界,理解其基本概念、开发环境搭建、...

    J2ME 入门书籍 课件

    总的来说,J2ME入门书籍和课件涵盖了从基本概念、MIDlet生命周期、开发流程到用户界面设计的全面知识,是初学者理解和掌握J2ME开发的宝贵资源。通过学习这些内容,开发者可以创建出能在各种小型设备上运行的Java应用...

    j2me入门_基础篇

    **J2ME入门_基础篇** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的嵌入式设备,如移动电话、智能家电和手持设备。本篇将深入探讨J2ME的基础知识,帮助初学者快速入门。 ### 1. J2ME...

    J2ME入门示例Eclipse

    通过这个"J2ME入门示例Eclipse",你可以逐步熟悉J2ME开发环境,学习基本的编程技巧,然后逐渐深入到更复杂的J2ME应用开发,比如游戏开发、移动服务客户端等。记得多实践,理论结合实际,是成为J2ME开发大师的关键...

    j2me入门:J2ME程序开发新手入门九大要点

    ### J2ME程序开发新手入门九大要点详解 #### 一、J2ME中需要的Java基础知识 对于初学者而言,了解哪些Java基础知识是J2ME开发所必需的非常重要。这有助于学习者更高效地掌握核心技能,避免在不相关的领域浪费时间...

    Java-j2me.rar_J2ME 教程_j2me 入门教程_java j2

    **J2ME入门教程**通常会涵盖以下几个关键部分: 1. **环境设置**:首先,你需要安装Java SDK(包括J2ME SDK)和一个集成开发环境(IDE),如NetBeans或Eclipse,它们提供了对J2ME项目的良好支持。 2. **基础语法**...

    j2me入门教程j2me入门教程j2me入门教程

    本教程将帮助初学者理解J2ME的基础概念和技术,以快速入门这个领域。 1. **J2ME架构** J2ME由两部分组成:配置(Configurations)和框架(Profiles)。配置定义了硬件和操作系统的基本需求,如Connected Limited ...

    J2ME编程入门PPT

    J2ME,全称Java Micro Edition,是Sun Microsystems(现已被Oracle公司收购)为嵌入式设备和消费类电子产品设计的开发平台。它与J2SE(Java Standard Edition)和J2EE(Java Enterprise Edition)一同构成了Java技术...

    J2ME入门教程与LWUIT实例

    J2ME入门教程与LWUIT实例,主要给新手提供

    (J2ME入门一)Eclipse配置J2ME开发环境归纳.pdf

    ### J2ME 开发环境配置指南 #### 一、Java环境配置 为了开始J2ME应用程序的开发,首先需要配置好Java开发环境。这包括安装Java Development Kit (JDK) 并设置相应的环境变量。 ##### **1.1 安装JDK** - 访问 ...

    J2ME入门电子书 exe 格式 入门书籍

    入式设备及消费类电器的J2ME(Java 2 Micro Edition)等3个版本(如图1所示)。J2 ME推出之后,Motorola公司作为J2ME的主要支持者,第一个在自己生产的手机上移植了 KVM(千字节虚拟机),又领导全球手机厂家制定了...

    J2ME入门-(6)CLDCAPI.doc

    J2ME入门-(6)CLDCAPI章节主要探讨的是CLDC API,这是Java Micro Edition (J2ME) 平台上针对小型设备和嵌入式系统的轻量级Java应用开发的关键组件。CLDC(Connected Limited Device Configuration)API是J2SE的一个...

    J2ME入门最基础的资料

    压缩包中的“J2ME入门最基础的资料,一看即会噢”很可能包含了关于这些概念的详细教程、示例代码和实践指导。对于初学者来说,这份资料将帮助他们了解J2ME的基础知识,学习如何创建MIDlets,使用AWT和MIDP进行UI设计...

    简易的j2me入门教程(解压之后是txt)

    (j2me入门的顺序,先看我传的,用手机入门j2me,然后再看这本,然后再看java编程那些事儿,希望能给大家一些帮助) 简单的引用! 小男孩尼克是个中学生,他从小就梦想着能拥有一部手机。上了中学后,这个梦想终于...

    j2me入门级学习代码工程

    本项目为J2ME的入门级学习代码工程,适合初学者进行实践操作,通过这个项目可以深入理解J2ME的基本概念和开发流程。 在J2ME中,主要有以下核心概念: 1. **配置与 profiles**:J2ME定义了多种不同的配置...

    J2ME手机游戏编程入门

    在"J2ME手机游戏编程入门"这个主题中,我们主要会学习以下几个核心知识点: 1. **J2ME架构**:J2ME由配置(Configurations)和 profiles 组成。配置定义了Java运行时环境的基础特性,如内存大小,而profiles则增加...

    J2ME入门最基础的资料,一看即会噢...

    总的来说,"J2ME入门最基础的资料"将引导初学者逐步理解J2ME的结构、API、开发流程和实践技巧,为后续深入学习和开发打下坚实基础。通过详细阅读和实践提供的资料,你将能够快速入门J2ME,开发出自己的第一个MIDlet...

Global site tag (gtag.js) - Google Analytics