Gosu::Song 在 Ruby 只演奏第一个音符

Gosu::Song in Ruby only playing first note

我正在尝试在 Windows 上用 Ruby(版本 2.2.6)编写一个简单的游戏。我安装了 Gosu gem 来处理音频,我有一个我想播放的配乐文件:

@soundtrack = Gosu::Song.new("theme.ogg")

我不能使用示例,因为我需要能够暂停。

 def play_soundtrack
    @soundtrack.play(looping = true)
  end

  def pause_soundtrack
    print "Paused "
    @soundtrack.pause
  end

运行这只会播放主题的第一个音符,然后不会播放任何声音。 Gosu::Sample 仍然可以正常工作,所以我不确定我使用 Gosu::Song.

有什么问题

Gosu 目前无法做到这一点,Song#play 没有 window 就无法工作。因为 Gosu 不使用后台线程播放音频,所以有一个内部方法 Song::update() 需要定期调用以保持歌曲播放。 Gosu::Window#showdoes this once per tick。无法直接从 Ruby 调用此方法。唯一的解决方法是在播放音频时显示一个微小的 window。

我已经打开 a GitHub issue 因为这应该被记录或修复。