//游戏主窗口
public class MyGanme extends Frame {
Image plane=GameUtil.getImage("Image/plane.png");
Image bg=GameUtil.getImage("Image/beij.jpg");
int planeX=100;
@Override
public void paint(Graphics g) {//g当作是画笔
g.drawImage(bg,0,0,500,500,null);
g.drawImage(plane,planeX,100,20,25,null);
planeX+=10;
}
public void launchFrame(){
this.setTitle("飞机大战");
setVisible(true);//窗口是否可见
setSize(Constant.Game_WIDTH,Constant.Game_WIDTH);//窗口大小
setLocation(100,100);//窗口打开的位置
//增加关闭窗口的动作
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
new PaintThread().start();//启动重画窗口线程
}
//定义了一个重画窗口的线程类 定义成内部类是为了方便使用窗口方法
class PaintThread extends Thread{
@Override
public void run() {
while (true){
repaint();//内部类可以直接使用外部类成员
try {
Thread.sleep(50);//1s=1000 1s画20次(20*50=1000
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//闪窗问题
private Image offScreenImage=null;
public void update(Graphics g){
if (offScreenImage==null){
offScreenImage=this.createImage(Constant.Game_WIDTH,Constant.Game_HEIGHT);
Graphics goff=offScreenImage.getGraphics();
paint(goff);
g.drawImage(offScreenImage,0,0,null);
}
}
public static void main(String[] args) {
MyGanme game=new MyGanme();
game.launchFrame();
}
}
import javax.imageio.ImageIO;
import java.awt.*;
import java.io.IOException;
import java.net.URL;
public class GameUtil {
public static Image getImage(String path){
Image img=null;
URL u=GameUtil.class.getClassLoader().getResource(path);
try {
img= ImageIO.read(u);
} catch (IOException e) {
e.printStackTrace();
}
return img;
}
public static void main(String[] args) {
Image img= GameUtil.getImage("Image/plane.png");
System.out.println(img);
}
}
我的飞机为啥不会动