选择显示字体大小

优化j2me中的paint()函数

我们经常会遇到这样的问题,在模拟器上跑得很好的程序在实际的手机上却很慢,甚至运行不了,这大多数是因为重画机制的使用不当所致,j2me中的paint()函数起到了画屏幕的作用,往往在需要动画的情况下非常频繁地需要调用,而且在一些低端手机或移动设备上面,对于paint()函数的频繁调用会引起相应时间长甚至无法正常工作等问题。所以,对于paint()函数的优化就显得特别重要。这里,我们提出几点优化paint()函数的方法和注意事项,在编程中大家可以参考:

1.不要在paint()函数当中使用耗时的操作,比如:

try{

image image_splash = image.createimage("/back.png");

g.drawimage(image_splash, 0, 0,graphics.top graphics.left);

}

catch(exception ex) {

}

其中的创建图片的方法由于需要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 );
graphics g = image.getgraphics();
来建立一个可变图像,它和canvas一样都能够得到graphics绘图对象的绘制。而且可以不在paint()函数里面,这一点非常重要。可以在init()中放入绘图语句,或者放到一个单独的函数中,把图片绘制到屏幕外缓冲当中,然后在paint()函数中仅仅是把这个image绘制到当前的canvas里面了,这样就可以节省很多计算操作。比如:
public void paint(graphics g){
g.translate(x - g.gettranslatex(), y - g.gettranslatey());//设置当前坐标系统
g.drawimage(image,0,0,g.topg.left);
g.translate(x - g.gettranslatex(), y - g.gettranslatey());//改回原来的坐标系统
}


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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