我有一个名为setSound()的方法,它设置一个队列并为其添加一个轨道然后播放它。我在simpleInitGame()中调用该方法。然而没有声音播放,eclipse中的控制台说:
Mar 13, 2012 10:15:55 PM com.jmex.audio.openal.OpenALSystem setupSourcePool
INFO: max source channels: 32
Mar 13, 2012 10:15:55 PM com.jme.util.resource.ResourceLocatorTool locateResource
WARNING: Unable to locate: src/com/preston/sounds/background.ogg
Mar 13, 2012 10:15:55 PM com.jmex.audio.openal.OpenALSystem createAudioTrack
WARNING: Could not locate audio file: src/com/preston/sounds/background.ogg
以下是方法:
protected void setSound()
{
audio = AudioSystem.getSystem();
sound1 = audio.createAudioTrack("src/com/preston/sounds/background.ogg", false);
queue = AudioSystem.getSystem().getMusicQueue();
queue.setCrossfadeinTime(0);
queue.setRepeatType(RepeatType.ONE);
queue.addTrack(sound1);
queue.play();
}
我认为这不是目录,因为我的纹理位于同一目录中(除了preston / sound而不是preston / textures)。
答案 0 :(得分:1)
这很可能是你的相对路径的问题。 jMonkeyEngine中ResourceLocatorTool的默认目录不是项目的根目录。尝试用绝对路径打开它,看它是否有效。
此外,您的文件位置不是明智的选择。 src文件夹用于java源文件,而不是资源。你应该把它们放在资产/声音中。见jME best practices
答案 1 :(得分:1)
最有可能你可以省略“src /”前缀。 Eclipse编译器会将所有java文件编译为类文件,并将源中的资源复制到“bin /”。 我认为JME然后使用ClassLoader.getResourceAsStream(...)从类路径加载资源。所以,尝试删除“src /".