我正在尝试构建一个静态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设备中)
请帮忙。
答案 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()
时不要忘记处理它。