搞了一星期还是不能实现动态,求大佬
java吧
全部回复
仅看楼主
level 1
bnugnuji 楼主
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();
}
}
2018年08月01日 03点08分 1
level 8
能显示图片么,还是没有显示,如果没有显示,可能是因为你一秒移动了2000像素,太快了跑出去了
2018年08月02日 00点08分 2
有显示的,像素之前设的是5,没动静才调到100的
2018年08月02日 00点08分
@bnugnuji 你可以在paint里输出语句,看看走没走这里
2018年08月02日 00点08分
@bnugnuji 等我到公司了给你看看
2018年08月02日 00点08分
level 8
找到原因了,你竟然在线程里写了break;那你那个while(true)不就没用了么
2018年08月02日 00点08分 3
我回去试试看,多谢大佬
2018年08月02日 00点08分
@bnugnuji 不客气,我也是这么过来的😂
2018年08月02日 00点08分
重画我还没学到,教程让照着敲的
2018年08月02日 00点08分
@等一下丶好嘛 当初有老师教不好好学,现在看书好难
2018年08月02日 00点08分
level 8
break去掉就好了
2018年08月02日 00点08分 4
level 13
break去掉
2018年08月08日 02点08分 5
已经解决了,多谢大佬
2018年08月08日 03点08分
1