发布一篇优化J2ME中的paint()函数
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的一个原因。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 是一种将安全性(Security)列为第一优先考虑的语言 是一种为 Internet发展的计算机语言
页:
[1]