一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 純Java代碼實現流星劃過天空

純Java代碼實現流星劃過天空

2020-01-12 14:53_Nick JAVA教程

本文給大家介紹純java代碼實現流星劃過天空,包括流星個數,流星飛行的速度,色階,流星大小相關變量設置。對java流星劃過天空特效代碼感興趣的朋友可以參考下本文

廢話不多說了,直接給大家貼java代碼了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.image.BufferedImage;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  public class MeteorFly extends JFrame {
   final int MAX = ; // (~)流星的個數
   final int SLEEP = ; // 流星飛行的速度(數值越大,速度越慢)
   final int COLORLV = ; // (~)色階(可改變光暈大小)
   final String COLOR = null; // ("#"~"#ffffff")光暈顏色(如果不填或null,則為默認顏色)
   final int SIZE = ; // (~)流星大小
   private MyPanel panel;
   public MeteorFly() {
   panel = new MyPanel();
   this.getContentPane().add(panel);
   this.setSize(, ); // 創建窗體
   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   this.setVisible(true);
   }
   public static void main(String[] args) {
   new MeteorFly();
   }
   class MyPanel extends JPanel implements Runnable {
   Meteor p[];
   int AppletWidth, AppletHeight;
   BufferedImage OffScreen;
   Graphics drawOffScreen;
   Thread pThread;
   public MyPanel() {
     setBackground(Color.black); //窗體初始化
     AppletWidth = ;
     AppletHeight = ;
     p = new Meteor[MAX];
     for (int i = ; i < MAX; i++)
     p[i] = new Meteor();
     OffScreen = new BufferedImage(AppletWidth, AppletHeight,
       BufferedImage.TYPE_INT_BGR);
     drawOffScreen = OffScreen.getGraphics();
     pThread = new Thread(this);
     pThread.start();
   }
   @Override
   public void paintComponent(Graphics g) {
     // TODO Auto-generated method stub
     super.paintComponents(g);
     g.drawImage(OffScreen, , , this);
   }
   @Override
   final public void run() {
     while (true) {
     // drawOffScreen.clearRect(, , AppletWidth, AppletHeight); //
     // 清屏
     for (int i = ; i < MAX; i++) {
       drawOffScreen.setColor(p[i].color); // RGB顏色
       drawOffScreen.fillOval(p[i].x, p[i].y, SIZE, SIZE);
       p[i].x += p[i].mx;
       p[i].y += p[i].my;
       // if (p[i].x > AppletWidth || p[i].y > AppletHeight) {
       // p[i].reset();
       // }
       int x = p[i].x;
       int y = p[i].y;
       int R = p[i].color.getRed(); // 提取顏色
       int G = p[i].color.getGreen();
       int B = p[i].color.getBlue();
       while (true) {
       if (R == && G == && B == ) {
         break;
       }
       R -= COLORLV; // 尾部顏色淡化
       if (R < ) {
         R = ;
       }
       G -= COLORLV;
       if (G < ) {
         G = ;
       }
       B -= COLORLV;
       if (B < ) {
         B = ;
       }
       Color color = new Color(R, G, B);
       x -= p[i].mx; // 覆蓋尾部
       y -= p[i].my;
       drawOffScreen.setColor(color);
       drawOffScreen.fillOval(x, y, SIZE, SIZE);
       }
       if (x > AppletWidth || y > AppletHeight) { // 流星飛出窗口,重置流星
       p[i].reset();
       }
     }
     repaint();
     try {
       Thread.sleep(SLEEP);
     } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
     }
   }
   }
   class Meteor { // 流星類
   int x, y; // 流星的位置
   int mx, my; // 下落速度
   Color color; // 流星顏色
   public Meteor() {
     reset();
   }
   public void reset() {
     int rand = (int) (Math.random() * ); //隨機生成流星出現位置
     if (rand > ) {
     x = (int) (Math.random() * );
     y = ;
     } else {
     y = (int) (Math.random() * );
     x = ;
     }
     mx = (int) (Math.random() * + ); //隨機生成下落速度和角度
     my = (int) (Math.random() * + );
     if (COLOR == null || COLOR.length() == ) {
     color = new Color(
       // 隨機顏色
       (new Double(Math.random() * )).intValue() + ,
       (new Double(Math.random() * )).intValue() + ,
       (new Double(Math.random() * )).intValue() + );
     } else {
     color = Color.decode(COLOR);
     }
   }
   }
 }

以上代碼就是本文給大家講述的純Java代碼實現流星劃過天空,希望本文分享能夠給大家帶來意想不到的收獲。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 福利一区三区 | 国产亚洲欧美在线中文bt天堂网 | 亚洲 欧美 日韩 国产 视频 | 国产精品香蕉在线观看不卡 | 亚洲首页国产精品丝袜 | 亚洲第一网色综合久久 | 成功精品影院 | 福利视频一区二区思瑞 | 四虎免费在线视频 | 石原莉奈adn093店长未婚妻 | 完整秽淫刺激长篇小说 | 99re5精品视频在线观看 | 糖心hd在线观看 | 午夜爱爱爱爱爽爽爽视频网站 | 星球大战成人h无删减版 | 久久青青草原精品国产软件 | 国产精品俺来也在线观看了 | 国产精品最新 | 青柠影院在线观看免费完整版1 | 成人亚洲欧美日韩中文字幕 | 午夜看片a福利在线观看 | 91肥熟国产老肥熟在线 | 99成人| 久久精品热在线观看30 | 人人爽人人看 | 国色天香 社区视频 | 三上悠亚国产精品一区 | 成人特级毛片69免费观看 | 女人爽到喷水的视频免费看 | a级影视 | www四虎影院 | 17岁俄罗斯csgo | ady@ady9.映画网 | 手机在线观看网站免费视频 | 成人在线观看视频免费 | 国产香蕉一区二区精品视频 | 亚洲高清一区二区三区久久 | 国产午夜久久精品 | 精品国产乱码久久久久久免费 | 亚洲国产福利精品一区二区 | 精品亚洲欧美中文字幕在线看 |