gpt4 book ai didi

java - 在 Java 中从资源加载声音时出现问题。有任何想法吗?

转载 作者:行者123 更新时间:2023-12-01 11:06:18 24 4
gpt4 key购买 nike

我一直在为我的 A-Level 计算项目开发一款自上而下的 2D 游戏,我的客户决定在游戏开始时播放声音。我的问题是我创建了一个名为 Sound 的类,它实现了 runnable (见下文)。在这个类中是我的音频代码。我在主 Game 类中创建了该类的实例,当 Enum 状态处于 START(开始屏幕)时,它会调用 sound.playSound(path)。我似乎根本听不到任何声音。代码如下。

感谢您的帮助。

声音等级:

package com.ritcat14.GotYourSix.util;

import java.net.URL;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Sound implements Runnable {

private String path;

public Sound() {
}

public void playSound(String path){
this.path = path;
Thread t = new Thread();
t.start();
}

public void run() {
try {
URL defaultSound = this.getClass().getResource(path);
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(defaultSound);
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

最佳答案

当您在 playSound() 方法中创建新的 Thread 时,您并没有为其提供要运行的 Runnable 。这意味着当您 start() 它时,什么也不会发生。

如果你看一下 start()Thread API doc 中做了什么,你会看到它:

Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.

run() 方法表示:

If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.

(强调我的)

尝试为 t 提供对 this 的引用,以便它运行您的 Soundrun()方法:

public void playSound(String path){
this.path = path;
Thread t = new Thread(this);
t.start();
}

关于java - 在 Java 中从资源加载声音时出现问题。有任何想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com