| 游戏贴图问题 | 发表时间: 2003-8-31 下午8:58 |  | 
      
         | 载入一个地图物件图片(.png) ,是一个包含要显示在地图上的物件 规格16*16 总长度16*90,读取level.dat文件包含的地图区域大小,
 以及要地图物件的排列情况,存放在一个二维数组中,
 数组的大小表示总地图的显示区域宽,高,行×16,列×16
 数组的内容表示要显示的图片(16*16)在地图物件图片(.png)的位置
 我是这样切割显示的,得不到想要的效果 :(
 
 //贴背景图
 //数组的内容是要显示图片的内容,数组的排列方式就是图片的显示位置
 //从下到上,从右往左贴,先贴满一个Canvas区域
 for (int i =backgroundMapData.length-1; i >=0; i--)
 for (int j =backgroundMapData[i].length-1; j >=0 ; j--) {
 int data = backgroundMapData[i][j];
 //XCellNum表示一个Cavans宽所能容纳的图片个数XCellNum=getWidth()/16
 if(data<=0||j>XCellNum)continue;
 //YCellNum表示Canvas高 Y方向能容纳的图片个数YCellNum=getHeight()/16
 if(i<YCellNum)break;
 //切割背景图片
 g.translate(data*16, 0);
 g.setClip(0, 0, CELLWIDTH, CELLHEIGHT);
 g.translate(-data*16,0);
 g.drawImage(mapObjectImage, j * CELLWIDTH, i * CELLHEIGHT,
 Graphics.LEFT | Graphics.TOP);
 }
 
 初次写游戏,想让图片人物移动的时候再画出其他的图像,不知可否给出类似效果的代码给予参考,或指定小弟,谢谢.
 | 
   
   
      
         
            | Re: 请问比手机屏幕大的图像如何显示? | 发表时间: Aug 1, 2003 1:29 PM |  | 
         
            | 我知道有两个方式,说出来大家交流一下: 1,普通绘画,控制坐标和大小就可以了,setClip(x,y,w,h)
 2双缓存方式
 
 | 
      
   
   在使用Canvas类画图的时候,为了保证不画出边界,使用了g.setClip()方法:
   
      int nClipX = g.getClipX();
       int nClipY = g.getClipY();
       int nClipWidth = g.getClipWidth();
       int nClipHeight = g.getClipHeight();
       // 设置新的Clip区域
       g.setClip(m_posX, m_posY, m_width, m_height);
       ......    // 画图操作
       ......
       // 恢复原始的Clip区域
       g.setClip(nClipX, nClipY, nClipWidth, nClipHeight);
   
   但是恢复之后的Clip区域并不等于原始的Clip区域,试了一下,好象Clip区域只能从大往小设置,不能再从小往大设置,为什么?那位大侠有没有解决的办法,谢谢了!
   
      !!使用 setclip注意的问题. 
   
   
      Rectangle oldClipBounds = g.getClipBounds(); Rectangle clipBounds = new Rectangle(...); g.setClip(clipBounds); ....... g.setClip(oldClipBounds); 
   
 
   
      
         
            | 
                  
                     
                        | 在MIDP1.0中简单模拟图片翻转功能。 | ![保存该页为文件]()  ![本贴有问题,发送短消息报告给版主]()  ![加入个人收藏&关注本贴]()  ![显示可打印的版本]()  ![把本贴打包邮递]()  ![把本贴加入收藏夹]()  ![发送本页面给朋友]()  |  |  | 
      
   
   
   
    
   
      
         
            |  | 
                  
                     
                        | pctkx  
                              
                            头衔: 灯心 门派: 烛光制作组
 
 ![]()  
 ![]()  信息:
 ![该用户目前不在线]()  ![帅哥]()  ![未羊]()  ![魔羯座]()  威望: 0
 魅力:
 ![]() ![魅力:0]() ![]()  经验:
 ![]() ![经验: 0]() ![]()  现金: 1000 JD
 存款: 没开户
 贷款: 没贷款
 来自: 辽宁沈阳
 ![China]()  发帖: 162 篇
 精华: 0 篇
 在线: 58 时 43 分 04 秒
 注册: 2003/08/03
 
 |  | ![]() 消息 ![]() 查看 ![]() 搜索 ![]() 好友 ![]() 复制 ![]() 引用 ![回复贴子]() 回复 | [楼 主] |  
                        |  |  
                        | 
                              
                                 
                                    | ![]()  | [这个贴子最后由pctkx在
                                       2004/09/29 11:55am 第 7 次编辑] 代码如下:
 public void paintImage(Graphics g,Image image,int x,int y)
 {
 for(int i=0;i< image.getWidth();++i)
 {
 g.setClip(x+i,y,1,image.getHeight());
 g.drawImage(image,x-image.getWidth()+i*2+1,y,Graphics.TOP|Graphics.LEFT);
 }
 }
 利用这个办法同样也能实现不同角度的翻转。
 只供参考,因为要求手机的性能要好,可能不太实用。
 ![]()  
 |  |  
                                    |  | 
 |  |  | 
      
   
   
    
    
 
    
Never giveup. Thanks the world.