CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2ME

高分请教JAVA速度问题!

楼主programer23(亮子)2006-06-01 17:50:35 在 Java / J2ME 提问

我想做一个游戏的地图编辑器,我的思想是把一个大图,用bufferedimage切成小图,然后,存到bufferedimage的数组里,然后,这个地图有放大和缩小功能,我的地图元素块是16x16,地图尺寸是64x64,然后我的地图有3层,我的地图块有500块,所以我的内存bufferimage[500],结果我运行了,内存虽然不占很多,CPU非常的耗资源,因为我放大显示后,就出现CPU资源达到90%多,我画图的放大是  
  g.drawImage(buf[i],0,0,buf[i].getWidht()*2,buf[i].getHeight()*2,null);一放大就出问题  
  我是把小的buf[i]图片画到一个大的宽800*600的大图片buf上了,结果,一放大就慢!  
  这个问题怎么解决啊!  
  问题点数:200、回复次数:7Top

1 楼programer23(亮子)回复于 2006-06-01 17:51:20 得分 0

dingTop

2 楼LoveVV99(LoveVV)回复于 2006-06-01 18:01:53 得分 0

那你就切分后先放大,再贴图,只是这样子内存消耗就变16倍了。呵呵。  
   
  你用java2D吗?Top

3 楼LoveVV99(LoveVV)回复于 2006-06-01 18:12:15 得分 0

把Graphics转换成Graphics2D,再drawimage,如果硬件支持加速的话,会加速很多。  
   
  还有就是采取一定的策略来重画,尽量少的重画,只花那些被修改过的部分,其他的部分不要动。比如只重画人物;或者是2D地图并且按格子移动时,将所有的图片保存下来,左移一格,然后把最左边的一排格子重画就好了,这样子可以极大减少运算量。  
   
  其他的就不知道怎么办了。  
   
  Top

4 楼programer23(亮子)回复于 2006-06-01 18:36:40 得分 0

我的方法是BufferedImage   buf   ;//图象缓冲区域  
  Graphics2D   g2   =   buf.getGraphics();  
  BufferedImage   [50]   bi;//那些小的地图块,地图元素,需要贴到buf上的.  
  void   paint(Graphics   g)  
  {  
        for(int   i=0;i<map.高;i++)  
        {    
                  for(int   j=0;j<宽;j++)  
                            g2.drawImage(bi[map[i][j],j*w,i*h,null);  
          }  
   
          g.drawImage(buf,0,0,buf.宽度*2,buf.高度*2,null);//这个是放大的  
  }  
  Top

5 楼programer23(亮子)回复于 2006-06-01 18:37:06 得分 0

因为,放大缩小是编辑者来操作的Top

6 楼programer23(亮子)回复于 2006-06-02 13:47:38 得分 0

dTop

7 楼LoveVV99(LoveVV)回复于 2006-06-02 15:12:25 得分 0

没办法,那个缩放操作本来就比较费时间。不过用了java2d后应该会有硬件支持的,不知道为什么你那个那么慢。  
   
  你那个地图重复程度高吗?如果重复程度比较高,就把当前屏幕上有的那些图片每种一个放大,然后贴图,这样子的话假设有100个相同的A图片,那么就只需要做一次缩放的运算了。还有就是在移动的时候按照我上面说的那种整体移动的办法。Top

相关问题

关键词

得分解答快速导航

  • 帖主:programer23

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo