Android studio 如何在Android Studio上制作音乐洗牌?使用或不使用数组
我需要帮助,使歌曲洗牌(混合),但我不知道如何,而且我希望它去到另一个音乐,每次没有重复Android studio 如何在Android Studio上制作音乐洗牌?使用或不使用数组,android-studio,libgdx,Android Studio,Libgdx,我需要帮助,使歌曲洗牌(混合),但我不知道如何,而且我希望它去到另一个音乐,每次没有重复 public class MusicMix { private Music music1, music2, music3, music4, music5,music6,music7,music8,music9,music10,music11,music12,music13,music14,music15,music16,music17; music1 = Gdx.audio.newMus
public class MusicMix {
private Music music1, music2, music3, music4, music5,music6,music7,music8,music9,music10,music11,music12,music13,music14,music15,music16,music17;
music1 = Gdx.audio.newMusic(Gdx.files.internal("musicA.mp3"));
music2 = Gdx.audio.newMusic(Gdx.files.internal("musicB.mp3"));
music3 = Gdx.audio.newMusic(Gdx.files.internal("musicC.mp3"));
music4 = Gdx.audio.newMusic(Gdx.files.internal("musicD.mp3"));
music5 = Gdx.audio.newMusic(Gdx.files.internal("musicE.mp3"));
music6 = Gdx.audio.newMusic(Gdx.files.internal("musicF.mp3"));
music7 = Gdx.audio.newMusic(Gdx.files.internal("musicG.mp3"));
music8 = Gdx.audio.newMusic(Gdx.files.internal("musicH.mp3"));
music9 = Gdx.audio.newMusic(Gdx.files.internal("musicJ.mp3"));
music10 = Gdx.audio.newMusic(Gdx.files.internal("musicK.mp3"));
music11 = Gdx.audio.newMusic(Gdx.files.internal("musicL.mp3"));
music12 = Gdx.audio.newMusic(Gdx.files.internal("musicM.mp3"));
music13 = Gdx.audio.newMusic(Gdx.files.internal("musicN.mp3"));
music14 = Gdx.audio.newMusic(Gdx.files.internal("musicO.mp3"));
music15 = Gdx.audio.newMusic(Gdx.files.internal("musicP.mp3"));
music16 = Gdx.audio.newMusic(Gdx.files.internal("musicQ.mp3"));
music17 = Gdx.audio.newMusic(Gdx.files.internal("musicR.mp3"));
}
我试图以这种方式实现你的要求
public class TestGame extends Game {
private Array<String> musicName;
private Array<Music> musicList;
private IntArray intArray;
@Override
public void create() {
musicName=new Array<String>(new String[]{"sound/x1.ogg","sound/x2.ogg","sound/x3.ogg","sound/x4.ogg","sound/x5.ogg"});
musicList=new Array<Music>();
intArray=new IntArray();
for (String path:musicName) {
Music music=Gdx.audio.newMusic(Gdx.files.internal(path));
musicList.add(music);
intArray.add(musicName.indexOf(path,true));
music.setOnCompletionListener(new OnComplete(this));
}
int value=MathUtils.random(musicList.size-1);
intArray.removeValue(value);
musicList.get(value).play();
}
public class OnComplete implements Music.OnCompletionListener {
private TestGame testGame;
public OnComplete(TestGame game){
testGame=game;
}
@Override
public void onCompletion(Music music) {
testGame.playUnPlayedMusic();
}
}
public void playUnPlayedMusic(){
int value ;
if(intArray.size>0) {
value = intArray.get(MathUtils.random(intArray.size - 1));
intArray.removeValue(value);
}else {
for (int i=0;i<musicList.size;i++)
intArray.add(i);
value = intArray.get(MathUtils.random(intArray.size - 1));
intArray.removeValue(value);
}
Music music= musicList.get(value);
music.play();
}
@Override
public void render() {
}
}
公共类TestGame扩展了游戏{
专用阵列音乐名称;
专用阵列音乐播放器;
私人IntArray IntArray;
@凌驾
公共void create(){
musicName=新数组(新字符串[]{“sound/x1.ogg”、“sound/x2.ogg”、“sound/x3.ogg”、“sound/x4.ogg”、“sound/x5.ogg”});
musicList=新数组();
intArray=新intArray();
用于(字符串路径:musicName){
Music Music=Gdx.audio.newMusic(Gdx.files.internal(path));
音乐列表。添加(音乐);
add(musicName.indexOf(path,true));
music.setOnCompletionListener(新的OnComplete(this));
}
int值=MathUtils.random(musicList.size-1);
InArray.removeValue(值);
musicList.get(value.play();
}
公共类OnComplete实现Music.OnCompletionListener{
私人测试游戏;
公共OnComplete(测试游戏){
测试游戏=游戏;
}
@凌驾
公共空间完成(音乐){
testGame.playunPayedMusic();
}
}
public void playdmusic(){
int值;
如果(阵列大小>0){
value=intArray.get(MathUtils.random(intArray.size-1));
InArray.removeValue(值);
}否则{
对于(int i=0;i首先创建一个数组,它应该使您的生活更轻松。而不是一个接一个地手动创建
Array<Music> musics = new Array<Music>();
for (int i = 65; i < 25; i++) {
//The ascii of 65 = A
char ascii = (char) i;
Music music = Gdx.audio.newMusic(Gdx.files.internal("music" + ascii + ".mp3"));
musics.add(music);
}
我不认为你想在Android上同时加载两到三首以上的音乐。
musics.shuffle();