我有一个在Eclipse中运行良好的程序;音乐很好用 . 但是,当我将它导出到一个可运行的jar中,并将库打包到jar中时,音乐就无法播放 . 音乐文件在正确的目录中,我提取了jar并进行了检查 . 声音效果也很好 . 这只是音乐不起作用 .
我不认为这是文件的问题,因为我导出jar,解压缩jar,用提取的文件打开文件夹,然后点击音乐文件播放它,它工作得很好....任何帮助?
这是代码:
package com.me.mygame;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
public class MyGame extends Game {
Game game;
Music music;
@Override
public void create() {
music = Gdx.audio.newMusic(Gdx.files.internal("Music.wav"));
music.setLooping(true);
music.play();
game = this;
setScreen(new Splash(game));
}
@Override
public void dispose() {
music.dispose();
}
}
Music.wav文件位于android项目的assets文件夹中,这是传统上应该用LibGdx存储资源的方式 . 令我困惑的是SFX的工作,但它只是音乐不起作用,而且它们在同一个目录中 . 正如我所说,音乐文件被放入jar文件,因为我能够提取它,找到它,并从提取的文件夹中播放它 .
2 回答
别人,没关系 . 我解决了;我将文件从WAV转换为MP3 . 我猜Eclipse有WAV文件的问题,如果它们太大了,因为我的Music.wav大约7mb不行,但我的Soundeffect.wav小于1mb工作正常 . 无论如何,谢谢你的所有答案 .
以下是您需要了解的一些事项:
当你从eclipse运行时,你只是处理文件,你可以简单地处理它们 .
当你编译你的jar时,事情会变得稍微复杂一些 . 例如,您需要以不同的方式访问它们,我不确定LibGDX如何工作,但我希望这些示例可以提供帮助:
在
src
目录中创建一个文件夹,我通常将其命名为res
,将声音文件放在/src/res/...
中现在,当你想要访问它们时,你就可以了
getClass().getResource(String location);
所以你可以做到
getClass().getResource("/res/soundfile.wav");
这将返回给定文件的URL,可以使用该URL .如果你需要一个流你可以做
getClass().getResourceAsStream("/res/soundfile.wav");
这将为您编译的jar中的文件作为InputStream!此方法适用于编译版和eclipse版 .