游戏贴图问题 | 发表时间: 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中简单模拟图片翻转功能。 | 默认稍大普通较大很大最大 |
| |
|
头衔: 灯心 门派: 烛光制作组 信息: 威望: 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); } } 利用这个办法同样也能实现不同角度的翻转。 只供参考,因为要求手机的性能要好,可能不太实用。
| | |
|
|