我的节目中播放了一些音乐。我希望它根据某些动作等来切换音乐。问题是我的音乐从一种方法开始播放,我试图从另一种方法或动作事件中阻止它。另一种方法无法找到我的剪辑对象,因为它不公开。是否可以将这个剪辑对象公开给我的全班?我试着为音乐制作另一堂课。有人可以指导我吗?谢谢,
public void playsound(String filepath){
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filepath));
Clip clip = AudioSystem.getClip( );
clip.open(audioInputStream);
clip.start( );
}
catch(Exception e) {
e.printStackTrace( );
}
}
public void dummyMethod(){
//when this method is call make the clip stop
}
答案 0 :(得分:1)
为什么不将Clip
对象设为实例/类范围的变量而不仅仅是局部变量,因此您可以在需要时调用clip.stop()
或clip.pause()
方法将其关闭或暂停?
修改强>
// declare as an instance variable
private Clip clip;
public void playsound(String filepath){
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filepath));
// NOTICE: I am only initializing and NOT declaring (no capital Clip)
clip = AudioSystem.getClip( );
clip.open(audioInputStream);
clip.start( );
}
catch(Exception e) {
e.printStackTrace( );
}
}
// call stop method to stop clip form playing
public void dummyMethod(){
clip.stop();
}
答案 1 :(得分:0)
使Clip clip
成为一个类变量,然后从dummyMethod
clip.Stop()
答案 2 :(得分:0)
在方法之外声明 Clip 变量,
只需在方法上面写 Clip clip; ,