如何在 Java GUI 游戏中使用已弃用的音频 API 来解决问题

Posted

技术标签:

【中文标题】如何在 Java GUI 游戏中使用已弃用的音频 API 来解决问题【英文标题】:How to get past using Deprecated API for audio in Java GUI game 【发布时间】:2021-04-21 21:34:36 【问题描述】:

所以我正在编写一个 Java 游戏,我想在达到某个点时添加声音效果。我在与 Java 文件本身相同的目录中的 .wav 文件中有音效。

我使用了这个问题的答案之一:Best way to get Sound on Button Press for a Java Calculator? 来播放音频 - 它完全没问题(所以我的代码可以工作)。但是,问题是我的编译器说我正在使用或覆盖已弃用的 API,我不确定我是否希望它发生。

以下是相关代码(有效,但使用了已弃用的 API):

        String soundName = "NoGodNo.wav";    
        URL soundbyte = new File(soundName).toURI().toURL();
        java.applet.AudioClip clip = java.applet.Applet.newAudioClip(soundbyte);
        clip.play();

我做了一些研究,发现 AudioClip 已被弃用:https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/applet/AudioClip.html,根据此链接它没有替代品。

有没有办法通过完全替换代码来绕过已弃用的 API 消息? (因为 AudioClip 没有替代品)。

提前致谢!

【问题讨论】:

【参考方案1】:

没关系,我明白了。以下是不使用已弃用 API 的答案:

    try 
    
        String soundName = "theme_audio.wav";    
        AudioInputStream audioInputStream = Audiosystem.getAudioInputStream(new File(soundName).getAbsoluteFile());
        Clip clip = AudioSystem.getClip();
        clip.open(audioInputStream);
        clip.start();
     catch (Exception e) 

谢谢!

【讨论】:

为了一切圣洁的爱,请不要catch (IOException i) @HovercraftFullOfEels 抱歉,我只是想看看如何在没有它的情况下消除编译器所产生的错误。事实上,我确实找到了一个更好的解决方案,我已经在上面编辑了我的答案。

以上是关于如何在 Java GUI 游戏中使用已弃用的音频 API 来解决问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS7 中,我应该使用啥来代替已弃用的 GKLeaderboardViewController?

我应该如何在 Android 中使用/不使用已弃用的方法

替换 Java Awt 已弃用的方法

如何在 Flex 3 中禁用已弃用的警告?

如何在不使用已弃用的类的情况下编写 Hadoop map reduce 作业?

在 Android 中,如何删除已弃用的通知变量?