非常漂亮的放焰火效果的Applet程序

Java Applet实现放烟花网页效果的探索 本文还有配套的精品资源,点击获取 简介:Java Applet作为Java技术的一种,曾用于在网页上创建交互式和动态内容。本文详细介绍了Java Applet的基本概念、生命周期、实现放烟花动画的关键步骤,并探讨了其安全性和兼容性问题。尽管由于安全和兼容性的原因,Java Applet已不再流行,但本文还提供了使用现代Web技术实现类似烟花效果的替代方案。 1. ... 阅读详情
效果

HTML代码
  1. <APPLET align=baseline code=Test.class height=260 width=800> 
  2. <PARAM NAME="para_bits" VALUE="10000"> 
  3. <PARAM NAME="para_max" VALUE="150"> 
  4. <PARAM NAME="para_blendx" VALUE="50"> 
  5. <PARAM NAME="para_blendy" VALUE="50"> 
  6. <PARAM NAME="para_sound" VALUE="2"> 
  7. <PARAM NAME="align" VALUE="baseline"> 
  8. <PARAM NAME="code" VALUE="Test.class"> 
  9. <param name="codeBase" value="."> 
  10. <PARAM NAME="height" VALUE="250"> 
  11. <PARAM NAME="width" VALUE="800"> 
  12. </APPLET> 
java源代码:
  1. import java.applet.Applet;
  2. import java.applet.AudioClip;
  3. import java.awt.*;
  4. import java.awt.image.MemoryImageSource;
  5. import java.util.Random;
  6. /**
  7.  * 放焰火的Applet程序。
  8.  * 
  9.  * @author 老紫竹(JAVA世纪网,java2000.net)
  10.  */
  11. public class Test extends Applet implements Runnable {
  12.   public Test() {
  13.     m_mouseX = 0;
  14.     m_mouseY = 0;
  15.     m_sleepTime = 5;
  16.     isError = false;
  17.     isInitialized = false;
  18.     rand = new Random();
  19.     bits = 10000;
  20.     bit_px = new double[bits];
  21.     bit_py = new double[bits];
  22.     bit_vx = new double[bits];
  23.     bit_vy = new double[bits];
  24.     bit_sx = new int[bits];
  25.     bit_sy = new int[bits];
  26.     bit_l = new int[bits];
  27.     bit_f = new int[bits];
  28.     bit_p = new int[bits];
  29.     bit_c = new int[bits];
  30.     ru = 50;
  31.     rv = 50;
  32.   }
  33.   public void init() {
  34.     String s = getParameter("para_bits");
  35.     if (s != null)
  36.       bits = Integer.parseInt(s);
  37.     s = getParameter("para_max");
  38.     if (s != null)
  39.       bit_max = Integer.parseInt(s);
  40.     s = getParameter("para_blendx");
  41.     if (s != null)
  42.       ru = Integer.parseInt(s);
  43.     s = getParameter("para_blendy");
  44.     if (s != null)
  45.       rv = Integer.parseInt(s);
  46.     s = getParameter("para_sound");
  47.     if (s != null)
  48.       bit_sound = Integer.parseInt(s);
  49.     m_nAppX = getSize().width;
  50.     m_nAppY = getSize().height;
  51.     m_centerX = m_nAppX / 2;
  52.     m_centerY = m_nAppY / 2;
  53.     m_mouseX = m_centerX;
  54.     m_mouseY = m_centerY;
  55.     resize(m_nAppX, m_nAppY);
  56.     pixls = m_nAppX * m_nAppY;
  57.     pixls2 = pixls - m_nAppX * 2;
  58.     pix0 = new int[pixls];
  59.     offImage = new MemoryImageSource(m_nAppX, m_nAppY, pix0, 0, m_nAppX);
  60.     offImage.setAnimated(true);
  61.     dbImg = createImage(offImage);
  62.     for (int i = 0; i < pixls; i++)
  63.       pix0[i] = 0xff000000;
  64.     sound1 = getAudioClip(getDocumentBase(), "firework.au");
  65.     sound2 = getAudioClip(getDocumentBase(), "syu.au");
  66.     for (int j = 0; j < bits; j++)
  67.       bit_f[j] = 0;
  68.     isInitialized = true;
  69.     start();
  70.   }
  71.   private boolean stop;
  72.   public void run() {
  73.     while (!isInitialized)
  74.       try {
  75.         Thread.sleep(200L);
  76.       } catch (InterruptedException interruptedexception) {
  77.       }
  78.     do {
  79.       for (int j = 0; j < pixls2; j++) {
  80.         int k = pix0[j];
  81.         int l = pix0[j + 1];
  82.         int i1 = pix0[j + m_nAppX];
  83.         int j1 = pix0[j + m_nAppX + 1];
  84.         int i = (k & 0xff0000) >> 16;
  85.         int k1 = ((((l & 0xff0000) >> 16) - i) * ru >> 8) + i;
  86.         i = (k & 0xff00) >> 8;
  87.         int l1 = ((((l & 0xff00) >> 8) - i) * ru >> 8) + i;
  88.         i = k & 0xff;
  89.         int i2 = (((l & 0xff) - i) * ru >> 8) + i;
  90.         i = (i1 & 0xff0000) >> 16;
  91.         int j2 = ((((j1 & 0xff0000) >> 16) - i) * ru >> 8) + i;
  92.         i = (i1 & 0xff00) >> 8;
  93.         int k2 = ((((j1 & 0xff00) >> 8) - i) * ru >> 8) + i;
  94.         i = i1 & 0xff;
  95.         int l2 = (((j1 & 0xff) - i) * ru >> 8) + i;
  96.         int i3 = ((j2 - k1) * rv >> 8) + k1;
  97.         int j3 = ((k2 - l1) * rv >> 8) + l1;
  98.         int k3 = ((l2 - i2) * rv >> 8) + i2;
  99.         pix0[j] = i3 << 16 | j3 << 8 | k3 | 0xff000000;
  100.       }
  101.       rend();
  102.       offImage.newPixels(0, 0, m_nAppX, m_nAppY);
  103.       try {
  104.         Thread.sleep(m_sleepTime);
  105.       } catch (InterruptedException interruptedexception1) {
  106.       }
  107.     } while (!stop);
  108.   }
  109.   public void update(Graphics g) {
  110.     paint(g);
  111.   }
  112.   public void paint(Graphics g) {
  113.     g.drawImage(dbImg, 0, 0, this);
  114.   }
  115.   public void start() {
  116.     if (isError)
  117.       return;
  118.     isRunning = true;
  119.     if (runner == null) {
  120.       runner = new Thread(this);
  121.       runner.start();
  122.     }
  123.   }
  124.   public void stop() {
  125.     if (runner != null) {
  126.       runner.stop();
  127.       runner = null;
  128.     }
  129.   }
  130.   public boolean mouseMove(Event event, int i, int j) {
  131.     m_mouseX = i;
  132.     m_mouseY = j;
  133.     return true;
  134.   }
  135.   public boolean mouseDown(Event event, int i, int j) {
  136.     m_mouseX = i;
  137.     m_mouseY = j;
  138.     int k = (int) (rand.nextDouble() * 256D);
  139.     int l = (int) (rand.nextDouble() * 256D);
  140.     int i1 = (int) (rand.nextDouble() * 256D);
  141.     int j1 = k << 16 | l << 8 | i1 | 0xff000000;
  142.     int k1 = 0;
  143.     for (int l1 = 0; l1 < bits; l1++) {
  144.       if (bit_f[l1] != 0)
  145.         continue;
  146.       bit_px[l1] = m_mouseX;
  147.       bit_py[l1] = m_mouseY;
  148.       double d = rand.nextDouble() * 6.2800000000000002D;
  149.       double d1 = rand.nextDouble();
  150.       bit_vx[l1] = Math.sin(d) * d1;
  151.       bit_vy[l1] = Math.cos(d) * d1;
  152.       bit_l[l1] = (int) (rand.nextDouble() * 100D) + 100;
  153.       bit_p[l1] = (int) (rand.nextDouble() * 3D);
  154.       bit_c[l1] = j1;
  155.       bit_sx[l1] = m_mouseX;
  156.       bit_sy[l1] = m_nAppY - 5;
  157.       bit_f[l1] = 2;
  158.       if (++k1 == bit_max)
  159.         break;
  160.     }
  161.     if (bit_sound > 1)
  162.       sound2.play();
  163.     return true;
  164.   }
  165.   public boolean mouseExit(Event event, int i, int j) {
  166.     m_mouseX = i;
  167.     m_mouseY = j;
  168.     return true;
  169.   }
  170.   // (JAVA世纪网,java2000.net)
  171.   void rend() {
  172.     boolean flag2 = false;
  173.     for (int k = 0; k < bits; k++)
  174.       switch (bit_f[k]) {
  175.       default:
  176.         break;
  177.       case 1: // '/001'
  178.         bit_vy[k] += rand.nextDouble() / 50D;
  179.         bit_px[k] += bit_vx[k];
  180.         bit_py[k] += bit_vy[k];
  181.         bit_l[k]--;
  182.         if (bit_l[k] == 0 || bit_px[k] < 0.0D || bit_py[k] < 0.0D || bit_px[k] > (double) m_nAppX
  183.             || bit_py[k] > (double) (m_nAppY - 3)) {
  184.           bit_c[k] = 0xff000000;
  185.           bit_f[k] = 0;
  186.         } else if (bit_p[k] == 0) {
  187.           if ((int) (rand.nextDouble() * 2D) == 0)
  188.             bit_set((int) bit_px[k], (int) bit_py[k], -1);
  189.         } else {
  190.           bit_set((int) bit_px[k], (int) bit_py[k], bit_c[k]);
  191.         }
  192.         break;
  193.       case 2: // '/002'
  194.         bit_sy[k] -= 5;
  195.         if ((double) bit_sy[k] <= bit_py[k]) {
  196.           bit_f[k] = 1;
  197.           flag2 = true;
  198.         }
  199.         if ((int) (rand.nextDouble() * 20D) == 0) {
  200.           int i = (int) (rand.nextDouble() * 2D);
  201.           int j = (int) (rand.nextDouble() * 5D);
  202.           bit_set(bit_sx[k] + i, bit_sy[k] + j, -1);
  203.         }
  204.         break;
  205.       }
  206.     if (flag2 && bit_sound > 0)
  207.       sound1.play();
  208.   }
  209.   void bit_set(int i, int j, int k) {
  210.     int l = i + j * m_nAppX;
  211.     pix0[l] = k;
  212.   }
  213.   private int m_nAppX;
  214.   private int m_nAppY;
  215.   private int m_centerX;
  216.   private int m_centerY;
  217.   private int m_mouseX;
  218.   private int m_mouseY;
  219.   private int m_sleepTime;
  220.   private boolean isError;
  221.   boolean isRunning;
  222.   boolean isInitialized;
  223.   Thread runner;
  224.   int pix0[];
  225.   MemoryImageSource offImage;
  226.   Image dbImg;
  227.   int pixls;
  228.   int pixls2;
  229.   Random rand;
  230.   int bits;
  231.   double bit_px[];
  232.   double bit_py[];
  233.   double bit_vx[];
  234.   double bit_vy[];
  235.   int bit_sx[];
  236.   int bit_sy[];
  237.   int bit_l[];
  238.   int bit_f[];
  239.   int bit_p[];
  240.   int bit_c[];
  241.   int bit_max;
  242.   int bit_sound;
  243.   int ru;
  244.   int rv;
  245.   AudioClip sound1;
  246.   AudioClip sound2;
  247. }

java写的具有烟花效果的applet 非常好,绝对的能用哦 !一下是一小部分代码 package gui; import java.awt.*; import java.applet.*; import java.awt.event.*; import javax.swing.*; //Download by http://www.codefans.net public class Fireworks extends Applet implements MouseListener,Runnable { int x,y; int top,point; /** *对小程序进行变量和颜色的初始化。 */ public void init() { x = 0; y = 0; //设置背景色为黑色 setBackground(Color.black); addMouseListener(this); } public void paint(Graphics g) { } /** *使该程序可以作为应用程序运行。 */ public static void main(String args[]) { Fireworks applet = new Fireworks(); JFrame frame = new JFrame("TextAreaNew"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } }); frame.getContentPane().add( applet, BorderLayout.CENTER); frame.setSize(800,400); applet.init(); applet.start(); frame.setVisible(true); } /** *程序主线程,对一个烟花进行绘制。 */ public void run() { //变量初始化 Graphics g1; g1 = getGraphics(); int y_move,y_click,x_click; int v; x_click = x; y_click = y; y_move = 400; v = 3; int r,g,b; while(y_move > y_click) { g1.setColor(Color.black); g1.fillOval(x_click,y_move,5,5); y_move -= 5; r = (((int)Math.round(Math.random()*4321))%200)+55; g = (((int)Math.round(Math.random()*4321))%200)+55; b = (((int)Math.round(Math.random()*4321))%200)+55; g1.setColor(new Color(r,g,b)); g1.fillOval(x_click,y_move,5,5); for(int j = 0 ;j<=10;j++) { if(r>55) r -= 20; if(g>55) g -= 20; if(b>55) b -=20; g1.setColor(new Color(r,g,b)); g1.fillOval(x_click,y_move+j*5,5,5); } g1.setColor(Color.black); g1.fillOval(x_click,y_move+5*10,5,5); try { Thread.currentThread().sleep(v++); } catch (InterruptedException e) {} } for(int j=12;j>=0;j--) { g1.setColor(Color.black); g1.fillOval(x_click,y_move+(j*5),5,5); try { Thread.currentThread().sleep((v++)/3); } catch (InterruptedException e) {} } y_move = 400; g1.setColor(Color.black); while(y_move > y_click) { g1.fillOval(x_click-2,y_move,9,5); y_move -= 5; } 立即下载

相关推荐

放烟花的网页(javaapplet )

放烟花的网页(javaapplet 嵌在网页中)

java烟花程序

java烟花程序,效果超好

hugo20__0__8的博客 3037

java烟花小程序可在无java环境运行

聊天时无意知道了一位女性朋友想看烟花,奈何不能陪她看。那就搞一个这样的小程序。从我得到的反馈来看,还不错。只要运行*.bat文件就行,64位的

制作一个烟花的applet

import java.awt.*; import java.applet.*; import java.awt.event.*; import javax.swing.*; public class Fireworks extends Applet implements MouseListener,Runnable { int x,y; int top,point; ...

penghao122 204

Swing特效的15个例子!!!!

从网上一个博文上搜集来的一些Swing特效的例子,如xp折叠效果_foldered_pane,鼠标悬停提示_tooltip,玻璃效果闪烁_glassbox,日历组件,环形右键弹出菜单等等.....绝对物超所值! 其中部分例子为jar形式,可直接运行...其余大部分是netbeans工程形式,在dist文件夹下也有jar文件,也可直接运行....需要了解源码的,请自行反编译....

c语言实现非常漂亮祝福烟花效果

c语言实现非常漂亮祝福烟花效果

春节将至,给身边的人放一场烟花(java)

新春将至,使用Java送祝福,给亲友们放个烟花。

qq_51118755的博客 1327

Java 使用Graphics类制作烟花.rar

通过制作烟花的实例,运用了Java2中的界面技术和线程技术。通过界面技术,制作出烟花的形状。通过线程技术,控制烟花的播放场景和播放时间。本实例代码编写完毕,存盘为:C: j2sdk1.4.0\javaprograms\ Fireworks.java。   打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javac Fireworks.java 来编译程序,最后将程序加载到网页上。运行方法:用浏览器打开Fireworks.html文件便可以看到制作效果。用鼠标点击浏览器中的面板,将出现五彩缤纷的烟花效果。本实例的知识点有:鼠标事件的监听,Graphics类和Thread类的应用。

java烟花小程序_一个漂亮的java烟花程序

package org.jetic.web.chat;import java.awt.*;import java.applet.*;import java.awt.event.*;import javax.swing.*;public class ChatApplet extends Applet implements MouseListener,Runnable{ int x,y; int t...

weixin_31077125的博客 1970

工业自动化中气动夹爪选型、调试与维护全流程实战解析

在工业自动化领域,气动执行元件是实现精准抓取与搬运的基础。其工作原理是通过压缩空气驱动气缸,转化为直线或旋转运动,从而控制夹爪的开合。这类技术因其结构简单、响应快速、成本低廉及维护方便,在自动化产线中具有极高的技术价值,是实现高效、可靠物料搬运的核心单元。其典型应用场景涵盖电子装配、汽车制造、食品包装等行业的上下料、分拣与定位工序。本文以工业自动化中常见的二指平行气动夹爪(常被工程师代号化为“Gripper-A”)为例,深入剖析其从硬件选型、气动系统集成到程序逻辑联锁的完整工程实践。内容聚焦于夹持力计算中惯

weixin_42629671的博客 366

忘记安卓锁屏密码怎么办?3种方法教你用ADB恢复访问(含gesture.key解密)

本文详细解析了安卓设备锁屏密码的存储与加密机制,特别是gesture.key文件的解密原理。针对遗忘密码的常见问题,提供了三种核心恢复方法:利用ADB调试接口删除密码文件、对gesture.key进行离线分析与解密,以及应对高版本系统的替代方案。重点介绍了通过ADB工具在Recovery模式下操作的具体步骤,帮助用户在合法合规前提下恢复设备访问权限。

php55的博客 959

java效果_java编写烟花效果

packagecom.java622p.wenzhi;importjava.applet.Applet;importjava.awt.Color;importjava.awt.Graphics;importjava.net.URL;importjava.util.Random;/*** 烟花*@authorwenzhi**/@SuppressWarnings("serial")public cla...

weixin_36054993的博客 720

Informer复现 -- 完整模型

有了数据和核心的ProbAttention,接下来就可以复现完整的Informer(图1)了。图1:Informer模型结构[1]如果对图1还不太熟悉的同学,可以参考图2。由图2可知,informer与Transformer之间的差异并不大。主要区别是ProbAttention和可能的encoder最后一层的conv(源代码中用来distil)。图2:参考Transformer画的Informer模型结构。

AI_daily的博客 3493

java烟花代码_Java烟花效果代码JAVA源码下载

一个漂亮的烟花特效,用JAVA写的,运行于APPLET,网页上能够运行,鼠标每点击一下就会放一个烟花,适合新手学习。Java烟花效果代码(1 folders, 2 files, 1.38 KB, 19.49 KB in total.) 源码(1 folders, 2 files, 1.38 KB, 18.10 KB in total.) skyrocket(1 fo...

weixin_35620886的博客 2916

360加固DEX解密与ELF修复技术解析

本文深入解析360加固的DEX解密与ELF修复技术,详细介绍了其多层保护机制、Java层入口分析、Native层加载流程及反调试绕过技巧。通过RC4和zlib解密技术,结合Frida工具实现内存Dump和ELF文件修复,为逆向工程师提供实用解决方案。

weixin_29327525的博客 512

数字后端实战指南 | Innovus Function ECO全流程解析(从LAB到Tapeout)

本文深入解析了在Cadence Innovus工具中进行Function ECO的全流程实战指南。从LAB环境搭建到Tapeout前的签核验证,详细拆解了Pre-mask与Post-mask ECO的核心步骤、关键命令(如ecoDesign)以及常见避坑方案。重点阐述了如何应对时序、DRC等挑战,并强调了备用单元管理与严格验证的重要性,是数字后端工程师提升综合能力的必备参考。

weixin_28452161的博客 643

Java Swing实现烟花效果(含音乐效果)

Java Swing实现烟花效果,在idea里面运行,要导入一个音乐的jar包。注解:这两个类要一起用才能运行。

快乐学习 3634

小白快速上手 labelimg:新手图像标注详解教程

本教程主要帮助没有使用过labelimg的小白上手该软件,快速学会基本操作和打标签,为数据集准备打下基础。

小白一枚~ 2万+

一个漂亮的java烟花程序

一个有趣的java漂亮烟花小程序

u013910357的专栏 1万+

上位机1000条/秒数据不丢不卡:SQLite持久化队列最优方案实战

在上位机每秒1000条、1MB数据的场景下,SQLite做持久化队列是最优解可靠性拉满,ACID事务+WAL模式保证绝对不丢数据;性能完全够用,优化后每秒几千条没问题;轻量无依赖,只有一个.db文件;C#/.NET原生支持,代码简单易维护。只要按照上面的优化点和代码实现,完全能满足工业现场的需求,不用再担心数据丢失、存储卡采集的问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 485

【论文解读--Xdog】新型电驱式四足机器人研制与测试

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、四足机器人体型大小和驱动方式的比较二、四足机器人设计一些重要的结论三、系统控制框架四、系统硬件框架五、力位混合控制(阻抗控制)六、侧向平衡控制(和VMC如出一辙)七、电机驱动系统研制(FOC磁场定向控制)总结 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对新型电驱式四足机器人研制与测试做个简单的介绍,具体内容后续再更,其他模块可以参

qq_35635374的博客 3727

java 烟花_Java 美丽的烟花

Java 美丽的烟花## 技术要点* 类Image的使用。* 类Graphics的使用。* 双缓冲技术处理闪烁。## 效果展示![image.png](https://image.xsoftlab.net/baike/articleImages/bbde40a764395d62f69e1e004e92146c.png)## 代码实现```javapackage net.xsoftlab...

weixin_39553705的博客 870

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java粒子系统(烟花篇)

一些看似很炫很好看的效果其实可能只需要几行代码,下面由小编给大家用粒子系统做出好看的效果。 效果图就是这样的啦,感觉还不错吧。如果想看烟花,又没条件,那我们也可以为自己献上一场烟火! 相信大家是迫不及待的想要代码了,那么接下来就是干货时间了。   import javax.swing.JFrame; import javax.swing.JPanel;   public clas...

qq_38831367的博客 3947

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

传说中的Java烟花程序

相信看到这些美丽的烟花图片,你会发现原来java也可以这么美 并且还是用awt做的,更是实属不易,但在此声明此程序并非出自本人之手 只是个人觉得这么美好的东西不应该被埋没于时间中,应该让更多人知道它的美 在此特将我收藏的烟花程序的代码贴出来与大家分享 同时也非常感谢这位牛人把这么好程序放到网上给人学习,让你我受益    主程序: App.java import jav

HelloJava1234的专栏 2万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 今天出差去山东省委,时间是一周。
下一篇: IBM DB2 Express-C 9.5.2 Beta 版发布
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 40
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值