Eclipse和LibGDX:在导出的jar上播放音乐的问题?

时间:2014-03-18 02:31:29

标签: java eclipse jar libgdx audio

我有一个在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 个答案:

答案 0 :(得分:2)

没关系,大家好。我解决了;我将文件从WAV转换为MP3。我猜Eclipse有WAV文件的问题,如果它们太大了,因为我的Music.wav大约7mb不行,但我的Soundeffect.wav小于1mb工作正常。不管怎样,谢谢你的所有答案。

答案 1 :(得分:0)

以下是您需要了解的一些事项:

当你从eclipse运行时,你只是简单地处理文件,你可以简单地处理它们。

当你编制你的jar时,事情会变得稍微复杂一些。例如,您需要以不同的方式访问它们,我不确定LibGDX的工作原理,但我希望这些示例可以提供帮助:

src目录中创建一个文件夹,我通常称之为res,将您的声音文件放在/src/res/...

现在,当您想要访问它们时,您可以

getClass().getResource(String location);

所以你可以做到

getClass().getResource("/res/soundfile.wav");这将返回一个可以使用的给定文件的URL。

如果您需要流,则可以

getClass().getResourceAsStream("/res/soundfile.wav");这将为您编译jar中的文件作为InputStream!这个方法适用于编译和eclipse版本。