处理后音乐无法再播放

时间:2019-06-04 10:49:34

标签: libgdx

我正在尝试构建一个静态AudioManager,该静态AudioManager只能在引用一个实例的情况下播放任何音乐。但是,从实例中删除相同的音乐后,就无法再次播放。

AudioManager在台式机上运行时有效,但在android设备上运行时失败。

静态Music music = null; public static Music playMusic(String musicName){ if (music!=null){ music.stop(); music.dispose(); } music = assetManager.get("music/"+musicName,Music.class); music.setLooping(true); music.play(); currentMusicName = musicName; MyDebugger.d("new music !"); return music; } 类的主要功能:

type: 'image/svg+xml'

从music_A更改为music_B可以,但是重用music_A不会播放没有错误的音乐。 (在android设备中)

请帮忙。

1 个答案:

答案 0 :(得分:1)

您正在处理音乐,然后在使用assetManager.get()时尝试重用相同的音乐实例。

使用AssetManager加载资产时,不应处置它。您应该卸载它。这也意味着您无法在卸载后重用它。您需要加载一个新副本。

Music music = null;
public static Music playMusic(String musicName)
{

    if (music!=null){
        music.stop();
        assetManager.unload(music);
    }

    assetManager.load("music/"+musicName,Music.class);
    assetManager.finishLoading();
    music = assetManager.get("music/"+musicName,Music.class);
    music.setLooping(true);
    music.play();
    currentMusicName = musicName;
    return music;
}

但是由于您一次只加载一个音乐实例(从您使用static方法来看),完全不使用资产管理器可能会更容易。

对于涉及一次性用品的任何物品,请小心使用static。调用游戏的dispose()时不要忘记处理它。