⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mythread.java

📁 用JAVA写个一个烟花效果
💻 JAVA
字号:
package FireFlower;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;


class  MyThread  extends Thread{
//新建一个进程类来处理重画
final  int  TIME=5;  //圈数
private     FireFlower ff;
  // MyAudio  myAudio=new  MyAudio("爆炸声.wav"); 
final  private  MyAudio  myAudio=new  MyAudio("爆炸声4.mid"); ; 

//控制画面暂停
 static     boolean   judge=true;
 //控制停止自动添加烟花式样
  boolean  myJudge=true;
	  
	  public MyThread(FireFlower ff){
	    this.ff=ff;
	  }
		   
	  public void run(){
		  Dot dot=null;
		  while(myJudge){
			  if(judge){
				  Iterator  iter=null;
				  
				  synchronized(ff.mm.lList){
					/*
					 * 之所以以复制lList容器的副本是
					 * 为了防止发生冲突,因为在遍历迭
					 * 代器时修改容器会使得线程冲突,
					 * 如果把锁的范围加下面的代码中,
					 * 会影响重画的响应性,所以复制
					 * 副本,使得一个容器处理添加式样
					 * 另一个容器来处理画面的重画线程
					 * 这样不冲突,又不阻止响应性
					 * 
					 * */  
					  Vector temp=null;
					  while(ff.mm.lList.size()>50){
						  System.out.println("当前数目超过50");
						  for(int i=0;i<10;i++){
						  ff.mm.lList.remove(i);}
					  }
					  //防止画面的烟花个数多于50个
					  //防止发生线程冲突
					  temp=(Vector)ff.mm.lList.clone();
			           iter=temp.iterator(); 
				  }   //synchronized(ff.mm.lList){	
				  
		    while(iter.hasNext()){
			    try{
					
		         dot=(Dot)iter.next();
			
		   
		    //先判断是否是爆炸状态,如果不是爆炸状态,就继续上升
			if(dot.state==1&&!dot.whetherBlast()){
				
			    dot.rise();
			}//if(dot.state==1&&!dot.whetherBlast())
			
		//如果是whetherBlast()返回的是true,那么就把该dot的state设置为2
			else  if(dot.state==1&&dot.state!=2){
		
				dot.state=2;
				
		      
				if(myAudio!=null){
					   myAudio.myPlay();
				}
				
			}//else  if(dot.state==1&&dot.state!=2)
			
			//规定,每个爆炸点最多是TIME圈,超过就会消失
			if(dot.circle>=TIME){dot.state=4;}
		//try完
			}catch(Exception e){
				 System.out.println(e);
			 }		 	
	         }//while(iter.hasNext())
		 ff.repaint();
		 
		 try{
		 Thread.sleep(300);
		  }catch(Exception e){
			  System.out.println(e);
		  }
		     
		 }//if(judge){
		 }//while(myjudge){
	  }//run()
	  
	  }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -