1

我有一个名为 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/sounds 它的 preston/textures 之外)。

4

2 回答 2

1

这很可能是您的相对路径的问题。jMonkeyEngine中ResourceLocatorTool的默认目录不是你项目的根目录。尝试用绝对路径打开它,看看它是否有效。

此外,文件的位置也不是一个明智的选择。src 文件夹用于存放 java 源文件,而不是资源。您应该将它们放在资产/声音中。查看jME 最佳实践

于 2012-06-27T09:09:36.160 回答
1

您很可能可以省略“src/”前缀。Eclipse 编译器会将所有 java 文件编译为类文件,并将资源从源代码复制到“bin/”。我认为 JME 然后使用 ClassLoader.getResourceAsStream(...) 从类路径加载资产。因此,请尝试删除“src/”。

于 2013-05-14T20:36:59.340 回答