java吧 关注:1,224,550贴子:12,680,764
  • 14回复贴,共1

搞了一星期还是不能实现动态,求大佬

只看楼主收藏回复

package myGame;
/**
* 测试物体按轨迹移动
*/
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.lang.Thread;
public class Gamefarme2 extends Frame {
Image img = gameUtil.getImage("imges/game.png"); //加载图片
public void launchFrame ()
{
setSize(600,600);
setLocation(100,100);
setVisible(true);
new PainThread().start();//启动重画线程
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private double x,y=100;
private boolean left;
@Override
public void paint(Graphics g) { //加载窗口
super.paint(g);
g.drawImage(img,(int)x,(int) y, null);
if(left){
x-=100;
}
else {
x+=100;
}
if (x>500-30) {
left=true;
}
if(x<0){
left=false;
}
}
class PainThread extends Thread //重画线程
{
public void run() {
while(true){
repaint();
try
{
Thread.sleep(50);
break;
}
catch (Exception e) {
}
}
}
}
public static void main(String[] args) { // 主函数
Gamefarme2 gf= new Gamefarme2();
gf.launchFrame();
}
}


1楼2018-08-01 11:44回复
    能显示图片么,还是没有显示,如果没有显示,可能是因为你一秒移动了2000像素,太快了跑出去了


    IP属地:浙江来自Android客户端2楼2018-08-02 08:19
    收起回复
      找到原因了,你竟然在线程里写了break;那你那个while(true)不就没用了么


      IP属地:浙江来自Android客户端3楼2018-08-02 08:35
      收起回复
        break去掉就好了


        IP属地:浙江来自Android客户端4楼2018-08-02 08:35
        回复
          break去掉


          5楼2018-08-08 10:58
          收起回复