你门好。
   有个问题实在很难解决  所以来发帖了  希望你门能帮帮我。。谢谢`   目标:梦幻西游行走事件。   材料1(已下简称背景图):5000*5000的梦幻西游背景图片(长寿村).
   材料2(已下简称人物):  500*500的人物模型图片.
   道具 :JFrame ,jLabel,以及监听事件等。   JFrame.setsize(500*500);大小为 500;
   将背景图放在JFrame上面(放在JLabel上然后在放在JFrame上(因为JFrame没背景图片))
   然后将一个 50*50的人物模型放在JFrame上
   我问的问题是
      一开始 背景图的中心是以人物模型为中心的
      怎么实现跟梦幻西游一样的行走效果
      只要发现人物移动了!!背景图也要跟着一起移动!
      背景图永远都要以人物为中心!!在线等。。谢谢。。```````   

解决方案 »

  1.   

    你将JLabel放到JFrame的BorderLayout布局的中间,这样JLabel的位置大小受到上层容器的布局影响,无法实现移动。
    建议继承JPanel新做一个MapPanel,将MapPanel放到JFrame中,在MapPanel中重写绘图方法将地图绘制出来。当你移动角色的时候,其实是做两件事:1、角色面向图片的更新;2、反方向移动背景图。移动的距离需要在MapPanel中定义属性,绘图方法中进行处理。
    建议:由于你的地图非常大,建议将地图先读入一个缓冲图形中,每次重绘MapPanel时只提取出某一区域进行绘制就可以了,否则速度会非常慢。
      

  2.   

    看一下API Docs
    java.awt.image.BufferedImage
      

  3.   

    这个问题自己已经解决了
    非常简单。
    只要把刚放的图 放到最大。图片有多大,Jlabel就有多大人物移动 图片的坐标也跟着移动
    (但其实人物根本没用  而是地图在动)  
      

  4.   

    肯定是要repaint的, 关键就是你需要的平滑程度.
    比如5个px刷一次(可以理解为按一次方向键即位置改变5个象素).
    或者1步1个象素, 这样走的慢, 刷的多, 如此而已吧.图象肯定是需要全部载入内存的, 但是可以重写Label的paintComponent方法, 只要画当前的内容就可以了.
      

  5.   

    搂主在做游戏吗?一般场景游戏, 需要场景模型,还有一个用于显示模型的Panel场景可以用 N*M 的数据格式组成, 每个Tile占有场景中的 1个格子.人物可以站在其中一个格子里面.Panel中只能显示 n*m 的Tile. 那么你需要计算什么时候该显示哪些格子.
    当鼠标点击panel上面的时候,你需要将鼠标的点转换成 场景中的某个Tile上面,然后以该Tile为中心显示出地图.
      

  6.   

    只是想仿造一个游戏而已
    CSRCOM看来你很专业哦
    不过能力有限 场景并不是场景模型做出来的
    而是一张图片..
    JAVA Swing好象并不能实现模型我现在想专攻Swing这一块.