使用JMF在java中停止音乐

使用JMF在java中停止音乐,java,jmf,Java,Jmf,所以我得到了一个为RPG游戏播放音乐的代码。第一种方法播放战斗音乐,另一种方法在你获胜时大张旗鼓。我的问题是,音乐堆叠在一起,最后播放的是上千种不同的战斗音乐和宣传片。当一场战斗结束,一场大张旗鼓应该响起时,我如何停止音乐,反之亦然 代码如下: import java.io.File; import javax.media.Format; import javax.media.Manager; import javax.media.MediaLocator; import javax.m

所以我得到了一个为RPG游戏播放音乐的代码。第一种方法播放战斗音乐,另一种方法在你获胜时大张旗鼓。我的问题是,音乐堆叠在一起,最后播放的是上千种不同的战斗音乐和宣传片。当一场战斗结束,一场大张旗鼓应该响起时,我如何停止音乐,反之亦然

代码如下:

import java.io.File;

import javax.media.Format;

import javax.media.Manager;

import javax.media.MediaLocator;

import javax.media.Player;

import javax.media.PlugInManager;

import javax.media.format.AudioFormat;


public class PlayMusic {

    public void playBattle() {

        try{
            Player player = Manager.createPlayer(new MediaLocator(new File("battle.wav").toURI().toURL()));
            player.start();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }

    public void playWin() {     


        try{
            Player player = Manager.createPlayer(new MediaLocator(new File("fanfare.wav").toURI().toURL()));
            player.start();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }

}

谢谢,这很有意义:)但是当我尝试编译时,我得到了“未报告的异常java.net.malformedurexception;必须被捕获或声明被抛出”试图使battlePlayer和winPlayer进入私有字段,但没有运气。Player battlePlayer=null;Player-winPlayer=null;publicplaymusic(){try{battlePlayer=Manager.createPlayer(新媒体定位器)(新文件(“battle.wav”).toURI().toURI());winPlayer=Manager.createPlayer(新媒体定位器)(新文件(“fanfare.wav”).toURI().toURI());}catch(异常e){}只需在类的开头定义播放器,并在构造函数中初始化它们,我明白了。非常感谢:最后一个问题tho,尝试在歌曲停止时重置歌曲。尝试了setMicroSecondPosition(0)和setFrameWorkPosition(0),但似乎JMF没有这些调用。。。
import java.io.File;

import javax.media.Format;

import javax.media.Manager;

import javax.media.MediaLocator;

import javax.media.Player;

import javax.media.PlugInManager;

import javax.media.format.AudioFormat;


public class PlayMusic {

 Player battlePlayer = Manager.createPlayer(new MediaLocator(new File("battle.wav").toURI().toURL()));
  Player winPlayer = Manager.createPlayer(new MediaLocator(new File("fanfare.wav").toURI().toURL()));


    public void playBattle() {

        try{

            battlePlayer.start();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }

    public void playWin() {     


        try{

            winPlayer.start();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }

 public void stopWin() {     


        try{

            winPlayer.stop();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }

 public void stopBattle() {     


        try{

            battlePlayer.stop();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }


}