手机游戏大哥们,帮我看看这个问题。在线等待

yukioliu 2010-09-19 11:20:38
下面这段加载地图到底是哪里出了问题啊!我的地图是高12,宽12像素的,地图是一个长方形,横着有291像素,竖的有84像素,也就是说横着有16块,竖着有7块,
for(int i=0;i<25;i++){
for(int j=0;j<20;j++){
int k=map1[i][j]-1;
offGra.setClip(j*12,i*12,12,12);
offGra.drawImage(imgMap,j*12-(k%16)*12,i*12-((int)k/16)*12,0);
}
}
offGra.setClip(0,0,ScreenWidth,ScreenHeight);
}
主要的错误是这样的,当我不加offGra.setClip(0,0,ScreenWidth,ScreenHeight);这句话的时候地图就可以加载上去没有任何错误,地图也是完整图片,但是就是人物没有了,但是当我把上面那句话加上去,人物还是没有,不仅如此地图也出了问题,不是完整的地图,我都被这个问题困扰两天了。假如不知道问题出在哪,教我应该怎么调试也行
...全文
99 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yukioliu 2010-09-19
[Quote=引用 1 楼 blueduan1985 的回复:]
map1是个保存什么的数组?k是个什么东东?
你画图片的坐标为什么是(j*12-(k%16)*12,i*12-((int)k/16)*12),你在这个坐标画出来的图片并一定不在你setClip(j*12,i*12,12,12)这个范围内。所以显示的时候不是完整的,也就是说,只有当k能被16整除,图片才会显示,否则你的程序在那一次循环相当于什么都没有做。
另外,把你画人物的代码贴出来看看,否则没……
[/Quote]
map1保存的是一个二维数组,k是二维数组里面保存的第几块图片,j*12-(k%16)*12这个是表示的X坐标,
i*12-((int)k/16*12)这个是Y坐标,至于为什么,这个可以加我QQ289485851我详细说明,人物代码如下:public void drawRole(int key){
roleR.setPosition(px,py); //注意roleR我采用的是游戏精灵不是图片
roleR.paint(offGra);
// System.out.println("已画");
if(key==K_LEFT){ /按下左肩的时候显示左边的图片
roleL.setPosition(px,py);
roleL.paint(offGra);
roleL.nextFrame();
}
else if(key==K_RIGHT){ //按下右键的时候显示右边的图片
roleR.setPosition(px,py);
roleR.paint(offGra);
roleR.nextFrame();
}

}
回复
blueduan1985 2010-09-19
map1是个保存什么的数组?k是个什么东东?
你画图片的坐标为什么是(j*12-(k%16)*12,i*12-((int)k/16)*12),你在这个坐标画出来的图片并一定不在你setClip(j*12,i*12,12,12)这个范围内。所以显示的时候不是完整的,也就是说,只有当k能被16整除,图片才会显示,否则你的程序在那一次循环相当于什么都没有做。
另外,把你画人物的代码贴出来看看,否则没人知道为什么人物没显示出来。
回复
blueduan1985 2010-09-19
两个问题分开说
1,地图不完整的问题。
加上offGra.setClip(j*12-(k%16)*12,i*12-((int)k/16)*12,12,12);依然不行?

2,人物不显示的问题。
采取单步调试的方法,把你的代码从头到尾都跟踪一遍,比如在程序分支的地方前面把后面用来判断的参数打印出来,再比如一些重要的语句后面打印一行来确定该语句是否执行。
回复
yukioliu 2010-09-19
[Quote=引用 3 楼 blueduan1985 的回复:]
1,你把setClip那一行改成这样:
offGra.setClip(j*12-(k%16)*12,i*12-((int)k/16)*12,12,12);

2,人物显示不出来的原因,有可能是以下几种,你尝试一下。

一,如果你先画了人物后画背景,那么人物会被盖住,所以显示不出来。

二,设置人物显示坐标的roleR.setPosition(px,py)有可能在当前绘图区域之外,可以……
[/Quote]

这些方法都试过了 都不行啊!该咋办呢 崩溃中
回复
blueduan1985 2010-09-19
1,你把setClip那一行改成这样:
offGra.setClip(j*12-(k%16)*12,i*12-((int)k/16)*12,12,12);

2,人物显示不出来的原因,有可能是以下几种,你尝试一下。

一,如果你先画了人物后画背景,那么人物会被盖住,所以显示不出来。

二,设置人物显示坐标的roleR.setPosition(px,py)有可能在当前绘图区域之外,可以在roleR.paint(offGra)前面加一句offGra.setClip(0,0,ScreenWidth,ScreenHeight)

三,画完人物之后,你没有flushGraphics(),把这句填上。
回复
相关推荐
发帖
J2ME
创建于2007-09-28

1.3w+

社区成员

Java J2ME
申请成为版主
帖子事件
创建了帖子
2010-09-19 11:20
社区公告
暂无公告