2015-08-26 4 views
2

Контекст:Воспроизведение ArrayList из MediaPlayer объектов

Я сделать игру с огромной группой людей для проекта универа, и я хочу, чтобы сделать музыкальный класс, где кто-то может написать Music music = New Music("song1.mp3, song2.mp3, song3.mp3") и music.play() где-то еще и он будет воспроизводить эти песни в порядке и навсегда. Файлы должны храниться в определенном месте, мой код в данный момент позаботится об этом. Я хочу, чтобы это было так, поэтому другим людям легко вставлять свою музыку в программу для любой области игры, которую они реализуют (преподаватели захотят, чтобы я это делал).

В данный момент мой код инициализирует с

private ArrayList<MediaPlayer> playlist; 

public Music(ArrayList<String> playlistStrings){ 
    playlist = new ArrayList<MediaPlayer>(); 
    for(int i = 0; i<playlistStrings.size(); i++){ 
     URL url = Music.class.getResource("../Music/" + playlistStrings.get(i)); 
     Media media = new Media(url.toString()); 
     MediaPlayer player = new MediaPlayer(media); 
     playlist.add(player); 
    } 
    System.out.println(playlist); 
} 

ТЛ; др

У меня есть ArrayList объектов MediaPlayer, и я хочу играть их всех, и весь цикл списка воспроизведения. Я понимаю, что я должен использовать Listener в какой-то момент ... но я все еще смущен, потому что хочу иметь прослушиватель, но я также хочу, чтобы он был в каком-то цикле ... У кого-нибудь есть пример этого где-то ? Я уже посмотрел https://gist.github.com/jewelsea/1446612 и извлек его код плейлиста, но это не сработало для меня. Спасибо!

Редактировать: Следующий код может воспроизводить список треков, но я не могу понять, как заставить весь список повторять бесконечно.

public void play(){ 
    System.out.println(trackIndex); 
    player = playlist.get(trackIndex); 
    player.play(); 
    player.setOnEndOfMedia(new Runnable() { 
     @Override public void run() { 
      System.out.println(trackIndex); 
      player.stop(); 
      if(trackIndex == (playlist.size()-1)){ 
       trackIndex = 0; 
      } 
      trackIndex++; 
      player = playlist.get(trackIndex); 
      player.play(); 
     } 
    }); 
} 

ответ

0
  • Фиксированный это, используя рекурсивный вызов метода ..
Смежные вопросы