📄 mythread.java.bak
字号:
package FireFlower;
import java.util.Iterator;
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("爆炸声.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=(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 + -