1 package test; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Frame; 5 import java.awt.Graphics; 6 import java.awt.Image; 7 import java.awt.event.WindowAdapter; 8 import java.awt.event.WindowEvent; 9 /** 10 * 测试物体沿着任意角度飞行 和停止 11 * @author Nicholas 12 * 13 */ 14 public class GameFrame3 extends Frame { 15 Image img = GameUtil.getImage("picture/test3.jpg"); 16 17 public void launchFrame(){ 18 setSize(500,500); 19 setLocation(300,150); 20 setVisible(true); 21 22 new PaintThread().start(); 23 24 addWindowListener(new WindowAdapter(){ 25 public void windowClosing(WindowEvent e) { 26 System.exit(0); 27 } 28 }); 29 } 30 31 private double x = 100, y = 100; 32 private double degree = 3.14/3;// 弧度:[0,2*pi]; 33 private double speed = 10;//控制速率 34 35 public void paint(Graphics g) { 36 g.drawImage(img, (int)x, (int)y, null); 37 x +=speed * Math.cos(degree); 38 y +=speed * Math.sin(degree); 39 if(speed > 0){ 40 speed -= 0.05; 41 }else { 42 speed = 0; 43 } 44 if(y > 500-50 || y < 30){ 45 degree=-degree; 46 } 47 if(x < 0 || x >= 500-50){ 48 degree=Math.PI-degree; 49 } 50 } 51 52 class PaintThread extends Thread{ 53 public void run(){ 54 while(true){ 55 repaint(); 56 try { 57 Thread.sleep(40); 58 } catch (InterruptedException e) { 59 e.printStackTrace(); 60 } 61 } 62 } 63 } 64 public static void main(String[] args) { 65 GameFrame3 gf=new GameFrame3(); 66 gf.launchFrame(); 67 } 68 }