java线程怎么添加音乐_在线程上用java播放音乐

void playInstrumentSound(InstrumentModel instrument) {

if (instrument.getMedia() != null) {

new Thread() {

public void run() {

instrument.setPlaying(true);

MediaPlayer player = new MediaPlayer(instrument.getMedia());

player.setVolume(1);

player.play();

try {

Thread.sleep(properties.getSleepLength());

} catch (InterruptedException e) {

e.printStackTrace();

}

instrument.setPlaying(false);

player.dispose();

}

}.start();

}

}

InstrumentModel是我的类,其中包含通过使用pathToSound初始化的媒体对象,pathToSound是资源文件夹中.wav文件的路径:

if (this.pathToSound != null) {

media = new Media(new File(this.pathToSound).toURI().toString());

}

例如,如果.wav文件的持续时间是300ms线程睡眠(300)在playeinstrumentSound()方法中,我可以听到完整的声音,但在这300毫秒内我不能播放不同的声音线程睡眠(50)然后我几乎可以立即再点击它,但我只听到50毫秒的.wav文件。

编辑:

我只是想换一种方法:

void playInstrumentSound(InstrumentModel instrument) {

if (instrument.getMedia() != null) {

instrument.setPlaying(true);

MediaPlayer player = new MediaPlayer(instrument.getMedia());

player.setVolume(1);

player.play();

new Thread() {

public void run() {

try {

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

instrument.setPlaying(false);

}

}.start();

new Thread() {

public void run() {

try {

Thread.sleep(250);

} catch (InterruptedException e) {

e.printStackTrace();

}

player.dispose();

}

}.start();

}

现在,它应该在250毫秒后关闭声音,并在50毫秒后更改isPlaying标志(如果isPlaying flag为真,则不能再次敲击鼓)。你觉得这可能有用吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值