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

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

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代碼實現流星劃過天空,希望本文分享能夠給大家帶來意想不到的收獲。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 白丝捆绑vk | 日本艳鉧动漫1~6在线观看 | 污污的动态图合集 | 免费观看视频网站 | 色综合色狠狠天天综合色hd | 日本大片免aaa费观看视频 | 香港日本三级亚洲三级 | 91sao国产在线观看 | 香蕉久久一区二区三区 | 色老妈 | 色综合久久综合网欧美综合网 | 色婷婷在线 | 美女翘臀跪床被打屁股作文 | 午夜私人影院在线观看 | 日韩在线视频免费不卡一区 | 国产区香蕉精品系列在线观看不卡 | 亚洲天堂成人在线观看 | 国产精品久久久久久久久久久搜索 | 荷兰艾优apiyoo | 99精品国产久热在线观看66 | 国产在线精品亚洲第一区香蕉 | 天堂va亚洲va欧美va国产 | 日本在线观看视频网站 | 男生操女生的漫画 | 久久久久久久久女黄9999 | 欧美图片另类小说综合 | 无遮挡h肉动漫高清在线 | 欧美日韩国产另类一区二区三区 | 国产第一福利视频导航在线 | 欧美日韩一区二区三区在线视频 | 日韩在线天堂免费观看 | 欧美a一级片| 亚洲天堂男人天堂 | 欧美理论片手机在线观看片免费 | 日日操日日舔 | 青青草影院在线观看 | 草草在线免费视频 | 911福利视频 | 欧美性白人顶级hd | 狠狠五月天中文字幕 | 国产伦精一区二区三区视频 |