未几说,只几个项目碰到的问题。希望能相助一些网友少走弯路。重要针对主流机器。
一.采取cldc1.0
不细说其余,cldc1.0告诉你,不用应用1.1的浮点数,Math.sin(x)等函数。如若应用了,在一些主流机器上直接不给你装配jar资料,你能很惨。。。。像sin函数等,你可用查表模式,先用工具计算出零-360度的值,并放大1024(左移10位速度快些)写死在程序里,计算时,先放大后缩小步骤责任书精密度:左移10位或许更多(上头的操作),其后计算的话直接依据度数的下标查寻到值。演算完再右移10位,军令状了一定的精密度。对付像台球碰球,射击枪子儿等晓得视角,算道路,大抵足够了。
二.采取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,当然,你直接运用零也行,TRANS_NONE的值乃是零嘛。呵呵。很多j二me游戏入门的图书,都引见了,game包里的GameCanvas,Sprite等,十分难为情对这些笔者和读者讲,这在现实开发中,不要,是废的!
三.j二me游戏面向对象,设计方式等一些非常好的设计模式,在j二me上亟需作出抉择
项目中不用太多的种,我搞过一款航行射击游戏,用了100多个种,发现n73相对好点性能的手机内存储器都过不去,并且速度慢,嗣后不停归拢种,删去接口,很苦痛。最后在60个类上下总算主流机型都过了,速度也不卡了。不倡议1点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费好大劲。希望有人碰到这问题能失去相助
四.搅混器施用
有点代码,不搅混,程序在手机上ok;搅混后不成;有点又相反。一样性能,编译后字节码资料都或者大了,也或者小了。通常情况下是搅混后,包小了,性能高了。如其万一相反,那么你可以尝试除此而外个搅混器版本试试。如果有点代码,不搅混,程序在手机上ok;搅混后不成,这种景况。那么,便是搅混器有问题了。别总是查程序,查不出毛病的。试过在程序中定义了个变量名为now来计时,结果发现索爱和lg上运作不行,时间总是不对点,程序没死,不按逻辑跑了。而放在nokia上是ok的哦。嗣后把now改为其余,全部机器上运作ok.这个搅混器可能机器的变量定名的bug叫你觅,你找多久?我找了一天。。。
五.线程应用
j二me中不用超过2个线程,要不然像索爱很不稳定,或许本次能跑过,下次不行。尽可能不用运用匿名线程,由于很多时分,用了它代码里你一不小心会有许多这些匿名种,失控了.而这些编译后都市成一个种.你最好定义出这个线程种来,这么你心头就会有这个类存在,故此更好的统制线程.谈到线程,便提一下子音乐播发,具体兑现是线程仍是什么我没有研究,(播发不会拥塞,能自动播放,不影响运作,总的看应该是个线程吧,之所以你要计这个也是线程哦)但在j二me游戏里,音乐是很次很次的,不用播发太大的mid播发音乐,会卡很多,这点很正常,换小点的mid是独一步骤.
六.System.gc()
这步骤,你不要,那是最好的.你担心内存储器不够?调用它?jvm就会额外分出钱源去做内存储器回收,指不定下次它自己又做了呢?这么多出一次,多铺张啊?gc是是非非常耗资源的!很可能游戏中,一调用System.gc()就会卡一会,令玩家不得劲了.甚至有点机器万一调用System.gc()系统就慢得不行了!只要记得你运用的不要货色,用=null;一下子,注意摘引的回收,资源自动会回收的,不要担心.终竟jvm是透过了10几年查验的.很多读物或许公司口试题都特地用gc做文章.说用什么步骤回收资源,gc是什么.我以心得告诉你,那些很 呵呵,不过据说有什么机器,不调System.gc()就不回收的哦.不过,我是没有遇到过这种机器滴....
七.会用Runtime去察看内存储器总量,施用量
八.程序中卡的问题,大抵与循环相关.画图时记得用缓冲.状态更新,处置收入,画图,能在一个循环就一个搞定最好.
九.学会用银屏做参数来定位置,对移栽能很有好处
十.会应用动编,地编,能利用脚本
11.会用草编译
本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception
- 1630 - 如何在oracle里批量rebuild索引
- 1631 - ORA-01722: 无效数字
- 1632 - 存储过程中能否返回游标
- 1633 - 此对象由 HOSBAK 导出
- 1634 - TNS-12560: Message 12560 not found
- 1635 - Loader-510
- 1636 - 发生意外错误 0x8ffe2740
- 1637 - 0xyyyyyyyy指令引用的0xzzzzzzzz内存不能为read
- 1638 - java.lang.OutofMemoryError: Java heap space
- 1639 - java中error和exception的区别
- 1640 - NetBeans里面JOGL怎么配置
- 1641 - java.lang.NumberFormatException: multiple points
- 1642 - [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket
- 1643 - System.err和System.out区别
- 1644 - ADSL错误代码
- 1645 - 写入文件extensibility.dll时出错
- 1646 - 内部错误 25003
- 1647 - 在应用程序级别以外使用注册为 allowDefinition=MachineToApplication 的节是错误的
- 1648 - .NET的异常处理机制
- 1649 - com.jspsmart.upload.SmartUploadException: File can not be saved
- 1650 - Ora-00997: Long型不能使用