2

如果我使用 .pause() 方法停止音频播放,然后设置 .currentTime=0 并最后再次调用 .play() 方法,我会听到划痕......有时听起来播放从 1 秒的位置开始,但应该从 0 开始!我的代码:

HTML:

<audio id="sound" preload="auto" autobuffer>
    <source src="a.mp3" />
</audio>

JS:

var sound = $('#sound')[0];

function playSound(){
    sound.pause();
    sound.currentTime = 0;
    sound.play();
}

如果我调用函数事件驱动,有时会发生上述错误。

有任何想法吗?谢谢。

4

2 回答 2

2

代码看起来不错。你试过不同的浏览器吗?HTML5 尚未最终确定,浏览器供应商正在着手实施。也许是一个错误?

于 2011-04-12T20:09:48.040 回答
0

试试这个......你实际上并没有在你的代码中调用事件。你称之为事件,一个全新的世界向你敞开,你可以用这个物体做什么......

我在这里做的是在用户单击音频元素并开始播放时启动计时器。然后,每隔 1 秒,我检查一次时间,看看是否已经过了 45 秒。如果有,这是我正在展示的音频的试用版,会将 currentTime 重置为 0,然后暂停视频,使其不再循环播放。然后我清除间隔。

你正在做的事情和我正在做的事情之间的区别在于函数参数中的那个小“e”。如果您确实console.log(e);在脚本中放置了某个位置,然后打开 Firebug 或任何其他基于 Web 的控制台,您可以单击返回的该值并查看您可以从事件对象访问的所有信息。从那里,您几乎可以让音频播放器为您煮一杯咖啡……好吧,也许不是这样,但您可以让它服从您的意愿。

$('audio').click(function(e) {
    window.setInterval(function(){ 
      if(e.currentTarget['currentTime'] > 45){ 
         $(e.currentTarget['currentTime'] = 0); 
         $(e.currentTarget.pause()); 
         clearInterval(); 
       } 
     }, 1000); 
});

==================================================== =======================

于 2013-05-30T02:23:47.393 回答