[编辑问题以澄清用户的观点。我在下面的评论已被删除,而是包含在此处。]
我有一个很长的声音文件(mp3),110秒。在这个文件的开头,音乐很开心,但到最后它会逐渐变得更加险恶。 注意:音频将以正常速度播放。
我有一个变量'var tension;'其值介于0和1之间,例如0.35。它衡量游戏中的怪异事物。张力值= 0.0表示其安全,张力值= 0.5表示酿造有点麻烦,张力值= 1.0表示粪便撞击风扇。但是可以实现0.0到1.0之间的所有十进制值。它取决于你与危险的接近程度,或者有人在追你。
以下是在程序开始时在内存中创建的全局Audio元素:
var g_TensionSound = new Audio();
g_TensionSound.src = "mysoundfile.mp3";
我等待mp3文件完全加载。
我每秒使用一个计时器事件来调用以下代码:
g_TensionSound.currentTime = 5.0 + 100 * tension;
if(g_TensionSound.paused) g_TensionSound.play();
因此,例如,第一次触发计时器事件时,张力= 0;,因此它在音乐文件中播放友好的声音(即在5秒标记处)。然后在下一次触发计时器事件时,玩家已经接近一些麻烦并且紧张已经上升到紧张= 0.25;所以这次将播放文件中30秒(5 +张力* 100)标记处的音乐片段。
不幸的是,这会产生非常小的结果,在切换到新的currentTime时稍有延迟。 有没有人知道这件事,或者如何解决?