1

[编辑问题以澄清用户的观点。我在下面的评论已被删除并包含在此处。]

我有一个很长的声音文件(mp3),110 秒。在这个文件的开头,音乐是快乐的,但到最后它变得越来越险恶。注意:音频将在整个过程中以正常速度播放。

我有一个可变的“var 张力”;它的值介于 0 和 1 之间,例如 0.35。它衡量了游戏中令人毛骨悚然的事情的发生程度。张力值 = 0.0 表示其安全,张力值 = 0.5 表示有一点麻烦酝酿,张力值 = 1.0 表示便便正在撞击风扇。但是可以实现 0.0 到 1.0 之间的所有十进制值。它取决于您与危险的距离或是否有人在追赶您。

以下是程序开始时在内存中创建的全局音频元素:

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 时会有轻微的延迟。有谁知道这件事,或者如何解决它?

4

0 回答 0