繁体   English   中英

声音加载在ubuntu中工作,但在Windows中不工作

[英]Sound loading working in ubuntu but not working in windows

我已经用Java编写了一种播放声音的方法。 它在我的ubuntu笔记本电脑上工作正常,但在Windows上不工作。 没有错误,但我认为由于某种原因,它可能会绕过Windows的排水方法。

public static void runOnce(final String location) {
    new Thread(new Runnable() {
        public void run() {
            try {
                File audioFile = new File(Game.gameFolder + "/sounds/" + location);
                final AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);

                AudioFormat format = audioStream.getFormat();

                DataLine.Info info = new DataLine.Info(Clip.class, format);

                final Clip audioClip = (Clip) AudioSystem.getLine(info);

                audioClip.open(audioStream);
                audioClip.start();
                audioClip.drain();
                try {
                    audioClip.close();
                    audioStream.close();
                } catch (Exception e) {
                    System.out.println("heyeyeyeyye");
                }
                System.out.println("sound method ran");
            } catch(Exception e) {}
        }
    }).start();
}

谢谢-泰勒

编辑:我记得实际上它在我使用排水之前在Windows上工作,但是经过一定时间后它将不再加载,所以我切换到排水

我建议您使用try-with-resources并建议您对启动的Thread进行join() ,并且不要吞下Exception的消息。 就像是,

public static void runOnce(final String location) {
    File audioFile = new File(Game.gameFolder + "/sounds/" + location);
    Thread t = new Thread(new Runnable() {
        public void run() {
            try (AudioInputStream audioStream = AudioSystem
                    .getAudioInputStream(audioFile);) {
                AudioFormat format = audioStream.getFormat();
                DataLine.Info info = new DataLine.Info(Clip.class, format);
                try (Clip audioClip = (Clip) AudioSystem.getLine(info);) {
                    audioClip.open(audioStream);
                    audioClip.start();
                    audioClip.drain();
                }
                System.out.println("heyeyeyeyye");
                System.out.println("sound method ran");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    t.start();
    t.join();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM