您的位置:首页 > 其它

游戏贴图问题 [小糊涂的灵感]

2004-10-20 14:12 387 查看
游戏贴图问题 发表时间: 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

魅力:






经验:






现金: 1000 JD

存款: 没开户

贷款: 没贷款

来自: 辽宁沈阳


发帖: 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);

 }

}

利用这个办法同样也能实现不同角度的翻转。

只供参考,因为要求手机的性能要好,可能不太实用。


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: