Java音乐(开始/停止)

Java音乐(开始/停止),java,javasound,fileinputstream,audiostreamer,Java,Javasound,Fileinputstream,Audiostreamer,好的,我正在做一个游戏,当你在不同的地区或者有干扰时,音乐会发生变化,比如AI 所以我刚刚学会了如何在我的程序中播放音乐,现在我正试图让它停止,但我不确定如何停止,下面是一段代码,音乐在其中播放,然后我尝试在动作发生时用新音乐对其进行过度渲染 public static void songs(String word) { String temp = word; if (temp.equals("start")) { try {

好的,我正在做一个游戏,当你在不同的地区或者有干扰时,音乐会发生变化,比如AI

所以我刚刚学会了如何在我的程序中播放音乐,现在我正试图让它停止,但我不确定如何停止,下面是一段代码,音乐在其中播放,然后我尝试在动作发生时用新音乐对其进行过度渲染

public static void songs(String word) {
        String temp = word;
        if (temp.equals("start")) {

            try {

                try {
                    blah = new FileInputStream("C:/Users/Austin/Desktop/Storage/programimages/game/battle.wav");

                } catch (Throwable e) {
                    e.printStackTrace();
                }
                AudioStream as = new AudioStream(blah);

                AudioPlayer.player.start(as);
                System.out.println("going");

            } catch (IOException e) {
                System.err.println(e);
            }
        }

        if (temp.equals("stop")) {

            try {

                try {
                    blah = new FileInputStream("C:/Users/Austin/Desktop/Storage/programimages/game/silence.wav");

                } catch (Throwable e) {
                    e.printStackTrace();
                }
                AudioStream as = new AudioStream(blah);

                AudioPlayer.player.stop(as);
                System.out.println("stopping");

            } catch (IOException e) {
                System.err.println(e);
            }
        }
    }
这是我能找到的唯一能播放音乐的方法,但如果你们有任何其他建议,请告诉我

再一次,我希望有声音的影响和音乐,现在发生的只是一首歌会播放,在任何情况下都不会停止,直到它到达它的长度的最后。我想能够停止歌曲时,一个新的应该来了,也允许声音影响弹出

谢谢! (因为我一直在想这个问题,现在需要一个答案,所以我可能会在一个或两个以上的java站点上重新发布,这样我就可以尽快得到回复,谢谢!!!!)

编辑代码:(仍不停止当前流,欢迎更多建议)


目前,您正在stop分支中创建一个新的
AudioStream
,并使用此方法调用stop方法。这与当前正在播放的对象不同。尝试将
AudioStream
设置为类变量,并对其调用stop

编辑:在包含代码的类的顶部

class YourClass {
    //the class member variable
    private AudioStream as;
    //[etc...]
在start分支中:

// 'as' has already been defined above
as = new AudioStream(blah);
AudioPlayer.player.start(as);
System.out.println("going");
在您的站点分支中:

try
{
    //don't try and do things with a null object!
    if (as != null)
    {
        AudioPlayer.player.stop(as);
    }
    System.out.println("stopping");
}
catch (IOException e)
{
    System.err.println(e);
}

方法上的
静态标识符可能会有问题-如果从实例化类中调用此标识符,则不需要它。

我甚至无法访问Eclipse IDE上的这些sun.audio对象--我知道它们在rt.jar中,但有关于它们的头信息是专有的等等

Java声音库(javax.Sound.sampled)能处理您想要做的事情吗?Clip和SourceDataLine都允许停止播放。如果您想使用本机Java,这是一种更常见的声音播放方式

播放到此处:

但总体而言,文档中的示例并不丰富。这个站点上有一些示例代码


这里有很多人,如果您在使用本机Java方法时遇到问题,他们可以提供帮助。

我现在正在尝试,但我遇到了很多错误,太多了,无法真正解释和使用它。你能给我一个基本的布局,告诉我你想在哪里实现audiostream变量,从哪里开始停止吗?我最好是“停止”它,或者只是播放一些“无声”的曲目。谢谢奥斯汀:希望我的编辑能有所帮助。wds:AudioPlayer.player上的停止被调用。如果他试图调用一个不存在的方法,代码甚至不会编译。只是想对我们所掌握的信息有所帮助。好的,这是我现在所掌握的。。。顺便说一句,现在,当我按下停止按钮或离开或任何更改时,它会打印出“stopping2”的意思,因为它不是空的。原声音乐仍在播放,但不起作用。我试着用播放无声音乐文件来替换停止,它所做的一切都是在其他声音之上运行。我需要设法切断这条河。我用新的编辑工具编辑了我的文章code@raveturned我也注意到了这个。。。警告:sun.audio.(在下面插入每个项目)是sun专有的API,可能会在将来的版本中删除:导入sun.audio.AudioPlayer;导入sun.audio.AudioStream;专用静态音频流as;AudioStream as=新的AudioStream(废话);AudioStream as=新的AudioStream(废话);AudioPlayer.player.start(as);音频播放器。播放器。停止(as);在“go”分支中,将
AudioStream更改为=新的AudioStream(blah)到仅
as=新音频流(废话),根据我的例子。
AudioStream
哪个是..具体是什么?
AudioStream
类的JavaDocs在哪里?
try
{
    //don't try and do things with a null object!
    if (as != null)
    {
        AudioPlayer.player.stop(as);
    }
    System.out.println("stopping");
}
catch (IOException e)
{
    System.err.println(e);
}