使用 XNA 4.0,我当前正在使用以下命令播放用户 PC/XBox360 上的歌曲:
Microsoft.Xna.Framework.Media.MediaPlayer.Play(Song song);
我看到媒体播放器有一个静态属性比赛位置正如我所研究的那样,它曾经是一个获取/设置属性,但它已更新为仅获取。
我可以使用其他方法/技巧来明确设置当前播放歌曲的播放位置吗?
看起来他们添加了一个动态音效实例 http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.dynamicsoundeffectinstance(XNAGameStudio.40).aspxXNA 4.0 中的类。成员函数之一是提交缓冲区 http://msdn.microsoft.com/en-us/library/ff434502(XNAGameStudio.40).aspx,它允许您设置“到数据起始位置的偏移量(以字节为单位)”。
请注意,我还没有尝试过这一点,而且我无法告诉您如何将音频放入字节缓冲区(也许您可以以某种方式从 XACT Wavebank 读取它?)。这样做也可能会很痛苦,因为如果您决定再次更改位置,您似乎无法删除缓冲区。您必须让它播放到最后,或者创建一个新类并提交一个具有新偏移量的新缓冲区。因此,您可以将字节缓冲区保留在内存中,并在每次想要更改位置时将其传递给新的 DynamicSoundEffectInstance 类,并使用新的偏移量。
就像我说的,我还没有尝试过,我只是参考 MSDN 上的文档。我四处搜寻了一段时间,肖恩·哈格里夫斯said http://forums.xna.com/forums/p/33819/238988.aspx#238988早在 09 年 10 月 XNA 4.0 发布之前,他认为这是不可能做到的。由于 PlayPosition 仍然是 XNA 4.0 中的仅获取属性,因此我认为您不会有任何运气,但 DynamicSoundEffectInstance 是新的,可能会为您提供所需的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)