java swing 雪花_求用JAVA制作的飘雪花的效果

展开全部

import java.applet.Applet;

import java.awt.*;

import javax.swing.JFrame;

import java.awt.image.BufferedImage;

import java.util.Random;

public class SnowPic extends Applet implements Runnable{

Thread mainThread;

Image offScreen,gAlc[];

Random rand;

int stopFlag,snows,wind,threadSleep,snowSize;

int[] snowX,snowY;

long stopTime =0;

Dimension dim;

MediaTracker mt;

public SnowPic(){

}

int getParameter(String s1,int s2){

String s=null;

try{

s=getParameter(s1);

}catch(NullPointerException ex){

}

return(s !=null)?Integer.parseInt(s):s2;

}

int getParameter(String s1, int s2, int max, int min){

String s=null;

try{

s=getParameter(s1);

}catch(NullPointerException ex){

}

if(s!=null){

if((s2=Integer.parseInt(s))>max){

return max;

}else if (s2

return min;

}else{

return s2;

}

}else{

return s2;

}

}

String getParameter(String s1 , String s2){

String s=null;

try{

s=getParameter(s1);

}catch(NullPointerException ex){

}

return (s!=null)?s:s2;

}

public void init(){

rand =new Random();

dim =getSize();

snows       =getParameter("snows", 100, 500,0);

snowSize    =getParameter("snowSize",3,10,3);

threadSleep =getParameter("threadSleep",80,1000,10);

snowX = new int [snows];

snowY = new int [snows];

for( int i=0;i

snowX[i]=rand.nextInt()%(dim.width/2)+dim.width/2;

snowY[i]=rand.nextInt()%(dim.height/2)+dim.height/2;

}

mt =new MediaTracker(this);

gAlc= new Image[1];

try{

gAlc[0]=getImage(getDocumentBase(), getParameter("graphic","test.gif"));

offScreen=createImage(dim.width, dim.height);

}catch(Exception ex){

gAlc[0]=new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB );

offScreen=new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB );

}

mt.addImage(gAlc[0],0);

try{

mt.waitForID(0);

}catch(InterruptedException ex) {

return;

}

stopFlag =0;

}

public void start(){

if (mainThread==null){

mainThread=new Thread(this);

mainThread.start();

}

}

public void stop(){

mainThread =null;

}

public void run(){

while(mainThread !=null){

try{

Thread.sleep(threadSleep);

}catch(InterruptedException ex) {return;}

repaint();

}

}

public void drawBackSnow(Graphics g){

g.setColor(Color.white);

for(int i=0;i

g.fillOval(snowX[i],snowY[i],snowSize,snowSize);

snowX[i]+=rand.nextInt()%2+wind;

snowY[i]+=(rand.nextInt()%6+5)/5+1;

if(snowX[i]>=dim.width) snowX[i]=0;

if(snowX[i]<0) snowX[i]=dim.width -1;

if(snowY[i]>=dim.height |62616964757a686964616fe78988e69d8331333332643966|snowY[i]<0){

snowX[i] =Math.abs(rand.nextInt()%dim.width);

snowY[i] =0;

}

}

wind =rand.nextInt()%5 -2;

}

public void paint(Graphics g){

offScreen.getGraphics().setColor(Color.black);

offScreen.getGraphics().fillRect(0,0,dim.width,dim.height);

offScreen.getGraphics().drawImage(gAlc[0],0,0,this);

drawBackSnow(offScreen.getGraphics());

g.drawImage(offScreen,0,0,null);

}

public void update(Graphics g){

paint(g);

}

public static void main(String args[]){

SnowPic snow=new SnowPic();

snow.setBounds(0,0, 500, 500);

snow.init();

JFrame jf=new JFrame("SnowPic");

jf.setSize(500, 500);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.add(snow);

jf.setVisible(true);

snow.start();

}

}

请参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值