仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 496|回复: 8
打印 上一主题 下一主题

[学习教程] 发布一篇优化J2ME中的paint()函数

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的一个原因。
冷月葬花魂 该用户已被删除
沙发
 楼主| 发表于 2015-1-20 22:19:25 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
活着的死人 该用户已被删除
板凳
发表于 2015-1-30 07:14:24 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
分手快乐 该用户已被删除
地板
发表于 2015-2-4 13:11:39 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-28 04:24:46 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
深爱那片海 该用户已被删除
6#
发表于 2015-3-9 20:52:23 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
小妖女 该用户已被删除
7#
发表于 2015-3-10 23:59:25 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-17 16:10:37 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
莫相离 该用户已被删除
9#
发表于 2015-3-24 11:33:56 | 只看该作者
是一种为 Internet发展的计算机语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 19:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表