XNA MediaPlayer快进/快退

时间:2010-03-25 19:14:08

标签: xna

使用XNA 4.0,我正在使用以下内容播放用户PC / XBox360中的歌曲:

        Microsoft.Xna.Framework.Media.MediaPlayer.Play(Song song);

我看到 MediaPlayer 有一个静态属性 PlayPosition ,正如我研究的那样,它曾经是一个get / set属性,但它已被更新以获取 - 只。

我是否可以使用其他任何方法/技巧来明确设定当前正在播放的歌曲的播放位置?

1 个答案:

答案 0 :(得分:1)

看起来很有人在XNA 4.0中添加了DynamicSoundEffectInstance类。其中一个成员函数是SubmitBuffer,它允许您将“偏移量(以字节为单位)设置为数据的起始位置。”

请注意,我还没有尝试过,我无法告诉你如何将音频放入字节缓冲区(也许你可以用某种方式从XACT波形库中读取它?)。执行此操作也可能会很痛苦,因为如果您决定再次更改位置,则看起来不会移除缓冲区。您必须让它播放到最后或创建一个新类并提交一个带有新偏移量的新缓冲区。因此,您可以将字节缓冲区保留在内存中,并在每次想要更改位置时将其传递给新的DynamicSoundEffectInstance类,并使用新的偏移量。

就像我说的那样,我还没有尝试过,我只是按照MSDN上的文档进行操作。我搜索了一会儿,Shawn Hargreaves said在09年10月回来之前XNA 4.0出来,他认为不能这样做。由于PlayPosition仍然是XNA 4.0中的唯一属性,我认为你没有任何运气,但DynamicSoundEffectInstance是新的,可能会提供你所需要的。