游戏背景随人物移动而移动的问题

fz4628413 2012-05-06 08:05:04
其实……我的问题是,如何让组件中一部分区域不停的在那个区域循环移动。
详情见
http://zhidao.baidu.com/question/420159703.html?quesup2&oldq=1
...全文
733 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlQ_ 2012-08-30
  • 打赏
  • 举报
回复
能否把你写的代码给我看一下?“如何让组件中一部分区域不停的在那个区域循环移动。”
可以的话发到我邮箱961751244@qq.com
MiceRice 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fz4628413 的回复:]
这个想法我明白,但是我的问题与它有点区别,我是希望在一个组件的部分区域内实现循环滚动的效果。请问你有什么好的方法吗?
[/Quote]

没太大区别啊,就是你只需要重载左侧(WEST)的JPanel的paint()函数,而不要重载JFrame的。
fz4628413 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

好吧,去你的百度知道连接看了下。知道你的意思是,把显示区域分为两个部分,一个是圈起来那部分,另一个就是剩下的,,然后想要圈起来的那个部分滚动,而剩下的部分不动是吗?。。你这样的话,完全可以用两个图来搞啊。。为什么要在一个区域局部绘图呢?。。还是我理解你的意思错了?。。看你的图应该是,男人一百层吧。你那张图我也有。我也写过一百层。
[/Quote]正是此意呀!用两个图???意思是用另一个jpanel把这个移动的区域框起来?
fz4628413 2012-05-07
  • 打赏
  • 举报
回复
感谢各位,终于帮我解决了这个问题。
现总结如下:
要使在组件A的一个区域B中的图像在B中循环滚动,只需将B中的图像放入一个组件C中,然后在C中按楼上各位所说的方法实现滚动,再把C add进A中就行了。
其效果是:B区域中图像不断滚动,而A中其他区域无变化。

但是又导出另外一个问题……大大们有兴趣看一下吧。。。
http://topic.csdn.net/u/20120507/17/fa977908-092c-4403-b6de-9be84185a268.html
咕噜 2012-05-07
  • 打赏
  • 举报
回复
好吧,去你的百度知道连接看了下。知道你的意思是,把显示区域分为两个部分,一个是圈起来那部分,另一个就是剩下的,,然后想要圈起来的那个部分滚动,而剩下的部分不动是吗?。。你这样的话,完全可以用两个图来搞啊。。为什么要在一个区域局部绘图呢?。。还是我理解你的意思错了?。。看你的图应该是,男人一百层吧。你那张图我也有。我也写过一百层。
sdojqy1122 2012-05-06
  • 打赏
  • 举报
回复
可以用坐标画线。y逐渐到 两线间隔长度 ,然后归位继续循环。
fz4628413 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

用首尾相接的方法。Image创建两个。一个从0,0开始滚动,一个从0,Height开始滚动。循环减少y的坐标。搞定。
左右和上下都是这样。j2me上我就是这样搞的。
复杂点的,像rpg的,可以用显示当前屏幕,或者卡马克
[/Quote]这个想法我明白,但是我的问题与它有点区别,我是希望在一个组件的部分区域内实现循环滚动的效果。请问你有什么好的方法吗?
咕噜 2012-05-06
  • 打赏
  • 举报
回复
用首尾相接的方法。Image创建两个。一个从0,0开始滚动,一个从0,Height开始滚动。循环减少y的坐标。搞定。
左右和上下都是这样。j2me上我就是这样搞的。
复杂点的,像rpg的,可以用显示当前屏幕,或者卡马克
MiceRice 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
谢谢,我试试。
[/Quote]

可以不用结贴,先自己写写代码,有问题贴出来继续交流。
fz4628413 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

大致流程如下:
1、先Load好图片到Image中,这个Image的高度稍微高点,便于循环滚动;
2、重写JPanel或者JFrame的 paint(Graphics g) 函数;
3、用g.drawImage();这里面有大量参数,可以控制所画图形的位置大小等,借助这些参数来实现下落的效果;这里面注意y的步长控制,到了一定时候要重新循环为0;
4、要用一个线程定期调用repaint()……
[/Quote]谢谢,我试试。
MiceRice 2012-05-06
  • 打赏
  • 举报
回复
大致流程如下:
1、先Load好图片到Image中,这个Image的高度稍微高点,便于循环滚动;
2、重写JPanel或者JFrame的 paint(Graphics g) 函数;
3、用g.drawImage();这里面有大量参数,可以控制所画图形的位置大小等,借助这些参数来实现下落的效果;这里面注意y的步长控制,到了一定时候要重新循环为0;
4、要用一个线程定期调用repaint(),这个线程很重要相当于控制全场景的时间轴。

这里面有个小问题,因为repaint()不是绝对立即触发paint()操作,所以可能会看起来不匀速。

思路就是上述这样,如果要代码的话,估计今天没空写了。。。
fz4628413 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

方法有2
1.圏起来的部分独立一个panel,并重写其绘制方法
2.圏起来的部分独立一个panel,并把其设置长点,先把整个图加载进行,但由于界面有限并不能全部显示,这时你只要将该panel Y的座标不断上移即可
[/Quote]谢!我先试试。
fz4628413 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

自行控制背景重绘,结合全屏幕的双缓冲手段,消除闪烁。

如果你企图借助组件来实现的话,效果会比较搓。
[/Quote]能说具体点么?我……不太懂。。。
myisfei 2012-05-06
  • 打赏
  • 举报
回复
方法有2
1.圏起来的部分独立一个panel,并重写其绘制方法
2.圏起来的部分独立一个panel,并把其设置长点,先把整个图加载进行,但由于界面有限并不能全部显示,这时你只要将该panel Y的座标不断上移即可
MiceRice 2012-05-06
  • 打赏
  • 举报
回复
自行控制背景重绘,结合全屏幕的双缓冲手段,消除闪烁。

如果你企图借助组件来实现的话,效果会比较搓。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧