使用JMF在java中停止音乐
所以我得到了一个为RPG游戏播放音乐的代码。第一种方法播放战斗音乐,另一种方法在你获胜时大张旗鼓。我的问题是,音乐堆叠在一起,最后播放的是上千种不同的战斗音乐和宣传片。当一场战斗结束,一场大张旗鼓应该响起时,我如何停止音乐,反之亦然 代码如下:使用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
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();
}
}
}