1

我正在使用 Gosu(使用 Ruby 版本 2.5.5)制作带有 GUI 的音乐播放器,我有一个基本的播放器一次播放一首歌曲,但我需要调整播放器才能播放一首歌曲继此之后:

@song = Gosu::Song.new(music_file)
@song.play(false)

我有三首歌曲需要播放并按顺序继续播放,直到所有歌曲播放完毕。

问题是循环会跳过前两首歌曲并播放最后一首。尝试复制每首歌曲的代码也会跳过前两首歌曲。

我一直试图让 Gosu 识别并按顺序播放歌曲,而不会在运行时跳过前两首。

我很感激帮助。

编辑:我使用的循环

for i in 0..songs.length - 1
        @song = Gosu::Song.new(songs[i])
        @song.play(false)
end
4

1 回答 1

0

像这样的东西应该工作

AUDIO_FILE_TYPES = %w[wav mp3 ogg aif aiff]

def play_songs(path)
  songs = Dir.entries(path).select do |filename|
    AUDIO_FILE_TYPES.include? File.extname(filename).delete('.')
  end

  songs.each do |song|
    playing_song = Gosu::Song.new(song).play
    while playing_song.playing?
      sleep 0.1
    end  
  end
end

play_songs('path/to/song/directory')
于 2019-11-22T18:14:37.987 回答