|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。
我们常常会碰到如许的成绩,在摹拟器上跑得很好的程序在实践的手机上却很慢,乃至运转不了,这年夜多半是由于重画机制的利用不妥而至,J2ME中的paint()函数起到了画屏幕的感化,常常在必要动画的情形下十分频仍地必要挪用,并且在一些低端手机或挪动设备下面,关于paint()函数的频仍挪用会引发响应工夫长乃至没法一般事情等成绩。以是,关于paint()函数的优化就显得出格主要。这里,我们提出几点优化paint()函数的办法和注重事项,在编程中人人能够参考:
1.不要在paint()函数傍边利用耗时的操纵,好比:
try{
Imageimage_Splash=Image.createImage("/back.png");
g.drawImage(image_Splash,0,0,Graphics.TOP|Graphics.LEFT);
}
catch(Exceptionex){
}
个中的创立图片的办法因为必要IO操纵十分费时,因而要只管制止,创立操纵只在初始化的时分做一遍。
2.利用像素较小的图片,一样平常来书,色彩品种少的图片显现工夫就少,因而,只管制止利用256色以上的图片,一些色彩丰厚,过分迟缓的图片常常必要多种像从来满意需求,因而,只管利用卡通图片,大概转换成256或16色的图片,会削减画图工夫。
3.部分革新,每次的重画repaint()都要挪用paint(),而并非每次repaint()都要重画全部屏幕,因而偶然候之必要重画部分屏幕便可,这又有两种办法能够完成,第一种是使用Clip,Clip是一个矩形的画图地区,当重绘时,仅仅重绘这个地区之内的内容,而不论其他部分,因而能够节俭操纵,可以经由过程setClip()等函数设定画图地区。
别的能够经由过程repaint(x,y,width,height)来重画指定的某一个地区,这个函数实践上也是设定了某一个重绘Clip(),不外利用起来会加倍便利。
4.削减repaint()的次数,只管只在发生感化的时分才重画。
5.将paint()函数的部份内容提到表面来做,使得重画削减盘算量和操纵。
6.利用双缓存手艺,某些设备自己就撑持双缓存手艺,判别设备是不是撑持双缓存能够用Canvas类的isDoubleBuffered()办法。完成双缓存可使用Image类的可变图象手艺。如,使用:
image=Image.createImage(width,height);
Graphicsg=image.getGraphics();
来创建一个可变图象,它和Canvas一样都可以失掉Graphics画图对象的绘制。并且能够不在paint()函数内里,这一点十分主要。能够在init()中放进画图语句,大概放到一个独自的函数中,把图片绘制到屏幕外缓冲傍边,然后在paint()函数中仅仅是把这个Image绘制到以后的Canvas内里了,如许就能够节俭良多盘算操纵。好比:
publicvoidpaint(Graphicsg){
g.translate(x-g.getTranslateX(),y-g.getTranslateY());//设置以后坐标体系
g.drawImage(image,0,0,g.TOP|g.LEFT);
g.translate(x-g.getTranslateX(),y-g.getTranslateY());//改回本来的坐标体系
}
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。 |
|