我创建了一个闹铃,响闹,直到拼图解决我有一个播放闹钟的游戏课 ` 包时钟;
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;
import javax.swing.*;
public class Play {
AudioClip ac;
Thread t;
public void playSound(int n)
{
try {
URL url = new URL("file:1.wav" );
ac = Applet.newAudioClip(url);
t= new Thread(){
public void run(){
ac.loop();
}
};
if(n==0){
t.start();
}
if (n==1){
JOptionPane.showMessageDialog(null,"OFF");
ac.stop();
t.interrupt();
}
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,e);
}
}`
它按时播放闹钟,但是当我用参数1调用它时,它会显示" OFF"但警报线程没有停止
答案 0 :(得分:1)
我创建了一个闹钟,响闹,直到拼图解决
您可以尝试使用最适合摇摆应用的Swing Timer。
以固定间隔播放声音,并在拼图解决后停止计时器。只需将标记isSolved
设置为true
,即可停止swing计时器。
示例代码:
private Timer timer;
private volatile boolean isSolved;
...
// interval of 1 second
timer = new javax.swing.Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(isSolved){
// stop the timer
timer.stop();
}else{
// play sound
}
}
});
timer.setRepeats(true); // you can turn off it
timer.start();
答案 1 :(得分:-1)
在线程的代码中添加一个运行的布尔值,并在调用run()时将其设置为true。创建一个额外的方法,停止Run()并使用它来停止线程。
Thread thread = new Thread(new Runnable(){
private bolean run;
public void run(){
while(run){
//code
}
}
public void stopRun(){
this.run = false;
}
}
);