首页 文章

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

提问于
浏览
0

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

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

  • 2

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

    当你从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版 .

相关问题