日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多彩泡泡屏保特效(JAVA版)

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多彩泡泡屏保特效(JAVA版) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

  • 一個多彩泡泡屏保特效(JS+CSS版)?https://my.oschina.net/darkness/blog/360394?

    package screensaver; import java.awt.AlphaComposite; import java.awt.Composite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask;import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel;import com.abigdreamer.infinity.common.util.IntegerValue; import com.sun.awt.AWTUtilities;@SuppressWarnings("restriction") public class BubblesScreensaver {// 常量static int D = 222; // 泡泡直徑static double K = 0.999;static double POW_RATE = 0.0001; // 補償概率static double POW_RANGE = 0.8; // 補償范圍(基于誕生速度)public static double SPEED_X() {return 8 + (RND() * 4);}public static double SPEED_Y() {return 6 + (RND() * 2);}static List<Bubble> arrBubs = new ArrayList<>();static double iBottom;static double iRight;public static double SQRT(double a) {return Math.sqrt(a);}public static double RND() {return Math.random();}static int clientWidth;static int clientHeight;public static void main(String[] args) {JFrame frame = new JFrame();frame.setAlwaysOnTop(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setUndecorated(true);frame.setExtendedState(JFrame.MAXIMIZED_BOTH);AWTUtilities.setWindowOpaque(frame, false);final JPanel pane = new JPanel() {private static final long serialVersionUID = 1L;@Overridepublic void paint(Graphics g) {super.paint(g);Graphics2D g2d = (Graphics2D) g;int n = arrBubs.size();for (int j = 0; j < n; j++) {Bubble bub = arrBubs.get(j);float v;g2d.translate(bub.x, bub.y);g2d.drawImage(bub.images[3], 0, 0, null);Composite old = g2d.getComposite();for (int i = 0; i < 3; i++) {v = (float) Math.abs(Math.sin(bub.kOpa[i] += bub.kStp[i] * Math.random()));v *= bub.POW[i];// v = ((v * 1e4) >> 0) / 1e4;AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, v);g2d.setComposite(alphaComposite);// 透明度g2d.drawImage(bub.images[i], 0, 0, null);// 背景}g2d.setComposite(old);g2d.translate(-bub.x, -bub.y);}}};pane.setOpaque(false);frame.setContentPane(pane);frame.setVisible(true);clientHeight = frame.getHeight();clientWidth = frame.getWidth();int MAX = 5;IntegerValue integerValue = new IntegerValue();Timer timer1 = new Timer();timer1.schedule(new TimerTask() {public void run() {if (integerValue.get() < MAX) {integerValue.add();CreateBubble(frame);} else {timer1.cancel();}}}, 10, 1000);// delay=2000毫秒 后執(zhí)行該任務(wù)Timer timer = new Timer();timer.schedule(new TimerTask() {public void run() {update();pane.repaint();}}, 10, 17);// delay=2000毫秒 后執(zhí)行該任務(wù)}public static void CreateBubble(JFrame frame) {Bubble bub = new Bubble();bub.setX(0);bub.setY(0);bub.vx = SPEED_X();bub.vy = SPEED_Y();arrBubs.add(bub);};public static void update() {int n = arrBubs.size();int i, j;updateWall();for (i = 0; i < n; i++) {Bubble bub = arrBubs.get(i);bub.vx *= K;bub.vy *= K;if (RND() < POW_RATE) {bub.vx = SPEED_X() * (1 + RND() * POW_RANGE);bub.vy = SPEED_Y() * (1 + RND() * POW_RANGE);}bub.setX(bub.x + bub.vx);bub.setY(bub.y + bub.vy);checkWalls(bub);}Bubble bub, bub2;for (i = 0; i < n - 1; i++) {bub = arrBubs.get(i);for (j = i + 1; j < n; j++) {bub2 = arrBubs.get(j);checkCollision(bub, bub2);}}}public static void updateWall() {iRight = clientWidth - D;iBottom = clientHeight - D;}public static void checkWalls(Bubble bub) {if (bub.x < 0) {bub.setX(0);bub.vx *= -1;} else if (bub.x > iRight) {bub.setX(iRight);bub.vx *= -1;}if (bub.y < 0) {bub.setY(0);bub.vy *= -1;} else if (bub.y > iBottom) {bub.setY(iBottom);bub.vy *= -1;}}static class Position {public double x;public double y;public Position(double x, double y) {this.x = x;this.y = y;}}public static Position rotate(double x, double y, double sin, double cos, boolean reverse) {if (reverse)return new Position((x * cos + y * sin), (y * cos - x * sin));elsereturn new Position((x * cos - y * sin), (y * cos + x * sin));}public static void checkCollision(Bubble bub0, Bubble bub1) {double dx = bub1.x - bub0.x;double dy = bub1.y - bub0.y;double dist = SQRT(dx * dx + dy * dy);if (dist < D) {// 計算角度和正余弦值double angle = Math.atan2(dy, dx);double sin = Math.sin(angle);double cos = Math.cos(angle);// 旋轉(zhuǎn) bub0 的位置Position pos0 = new Position(0, 0);// 旋轉(zhuǎn) bub1 的速度Position pos1 = rotate(dx, dy, sin, cos, true);// 旋轉(zhuǎn) bub0 的速度Position vel0 = rotate(bub0.vx, bub0.vy, sin, cos, true);// 旋轉(zhuǎn) bub1 的速度Position vel1 = rotate(bub1.vx, bub1.vy, sin, cos, true);// 碰撞的作用力double vxTotal = vel0.x - vel1.x;vel0.x = vel1.x;vel1.x = vxTotal + vel0.x;// 更新位置double absV = Math.abs(vel0.x) + Math.abs(vel1.x);double overlap = D - Math.abs(pos0.x - pos1.x);pos0.x += vel0.x / absV * overlap;pos1.x += vel1.x / absV * overlap;// 將位置旋轉(zhuǎn)回來Position pos0F = rotate(pos0.x, pos0.y, sin, cos, false);Position pos1F = rotate(pos1.x, pos1.y, sin, cos, false);// 將位置調(diào)整為屏幕的實際位置bub1.setX(bub0.x + pos1F.x);bub1.setY(bub0.y + pos1F.y);bub0.setX(bub0.x + pos0F.x);bub0.setY(bub0.y + pos0F.y);// 將速度旋轉(zhuǎn)回來Position vel0F = rotate(vel0.x, vel0.y, sin, cos, false);Position vel1F = rotate(vel1.x, vel1.y, sin, cos, false);bub0.vx = vel0F.x;bub0.vy = vel0F.y;bub1.vx = vel1F.x;bub1.vy = vel1F.y;}}}class Bubble {static int D = 222; // 泡泡直徑double APLHA = 0.8;double[] POW = new double[] { 1.0, APLHA, APLHA * APLHA };double vx;double vy;double x;double y;double[] kOpa;double[] kStp;Image[] images = new Image[4];public Bubble() {double[] kOpa = new double[4];double[] kStp = new double[4];for (int i = 0; i < 4; i++) {// 泡泡頂層if (i == 3) {ImageIcon imageIcon = new ImageIcon(getClass().getResource("heart.png"));images[i] = imageIcon.getImage();} else {ImageIcon imageIcon = new ImageIcon(getClass().getResource("ch" + i + ".png"));images[i] = imageIcon.getImage();}kOpa[i] = 3 * Math.random();kStp[i] = 0.02 * Math.random();}this.kOpa = kOpa;this.kStp = kStp;}public void setX(double x) {this.x = x;}public void setY(double y) {this.y = y;}}

    ?

轉(zhuǎn)載于:https://my.oschina.net/darkness/blog/802989

總結(jié)

以上是生活随笔為你收集整理的多彩泡泡屏保特效(JAVA版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产极品美女高潮无套嗷嗷叫酒店 | 综合久久久久综合 | 九九九色| 激情综合区 | 人妖性生活视频 | 激情吧| 欧美特级毛片 | 制服丝袜第一页在线观看 | 九九激情视频 | 99精品在线播放 | 国产福利一区二区三区在线观看 | 99re7| 日韩国产电影 | 久久免费公开视频 | 亚洲精品乱码久久久久久蜜桃麻豆 | 91aaaa| 北条麻妃一区二区三区免费 | 日韩一区二区在线免费观看 | 精品久久精品久久 | 国产白嫩美女无套久久 | 亚洲一区二区影视 | 男女做受视频 | 春意影院福利社 | 一女双乳被两男吸视频 | 黄色一节片 | 亚洲人高潮女人毛茸茸 | 蜜臀久久99精品久久久久宅男 | 欧美14sex性hd摘花 | 新版红楼梦在线高清免费观看 | 久久国产成人 | 亚洲乱码av| 91成人免费在线视频 | av中文网 | 亚洲av少妇一区二区在线观看 | 少妇太爽了太深了太硬了 | 国产在线中文字幕 | 国产乱码精品一区二区三区中文 | 日本精品专区 | 人妻少妇精品无码专区 | 欧美国产成人精品一区二区三区 | 王者后宫yin肉h文催眠 | 国产无码精品在线播放 | 最新日韩三级 | 两个人看的www视频免费完整版 | 亚洲成人第一网站 | 亚洲大片在线观看 | 九草视频在线 | 专干老肥女人88av | 色欲亚洲Av无码精品天堂 | 97国产成人无码精品久久久 | 驯服少爷漫画免费观看下拉式漫画 | wwwxx国产 | 玩弄白嫩少妇xxxxx性 | 亚洲欧洲综合av | 男女乱淫| 成人资源在线 | 男人影院在线 | 天堂在线91 | 国产三级91 | 在线国产区 | 日韩成人高清视频 | 中出视频在线观看 | 一区二区久久久 | 泰国午夜理伦三级 | 色综合天天综合网天天看片 | 国产乱淫av免费 | 麻豆精品在线观看 | 亚洲精品无人区 | 久久艹中文字幕 | 国产91在线高潮白浆在线观看 | 在线看黄网 | 亚洲综合成人在线 | 欧美a∨| 亚洲影院在线播放 | 亚洲瑟瑟| 制服诱惑一区二区三区 | 欧美专区日韩专区 | 激情宗合网 | 免费久久久久久 | 成人网页 | 狠狠人妻久久久久久综合 | 亚洲iv一区二区三区 | 精品爆乳一区二区三区 | 免费黄色成人 | 日日干日日干 | 97视频免费在线观看 | 成人黄色一区二区三区 | 91黄免费 | 久久久久久久久久久影视 | 农村黄色片 | 色呦在线| 色爽| а中文在线天堂 | 四虎在线视频免费观看 | 欧美鲁| 粉嫩av一区二区三区天美传媒 | 女人裸体免费网站 | 香蕉久久av一区二区三区 | 久久久久久欧美精品se一二三四 |