我正在尝试制作一个具有扩展 TimerTask 的 Sound 类的音乐应用程序。Sound 类有一条音频线,它通过计时器重复声音。
当我尝试更改费率时,我的问题出现了。下次声音开始时它会改变。
我试图做这样的事情:
public class Sound extends TimerTask {
private boolean playing;
private Timer t;
private long rate;
public void turnOn(){
if(!playing){
playing=true;
t= new Timer();
t.scheduleAtFixedRate(this, 0, rate);
}else{
playing=false;
t.cancel();
}
}
public void run(){
if(playing){
//Here it would play the sound
}
}
public void changeRate(long rate){
this.rate=rate;
}
但这不起作用。正如我所读的那样,我应该创建一个新的 TimerTask 来执行 scheduleAtFixedRate,但是 TimerTask 是类,有没有办法在不创建另一个 Sound 类对象的情况下做到这一点?谢谢!