如何在动画后播放HTML5中的声音?

时间:2016-10-29 13:47:03

标签: jquery html5 html5-audio createjs tweenjs

我正在努力学习如何在我正在开发的游戏中播放声音。

我需要在动画后播放声音,但是当我尝试调用sound.play()时。

浏览器声明您只能使用人体手势播放声音?

任何人都有一些技巧在这里分享。感谢。

ADDED ============

我在移动设备中遇到此问题。

2 个答案:

答案 0 :(得分:6)

您的代码示例会有所帮助,但此问题已标记为jQuery,因此我假设您正在寻找此库的解决方案。并且jQuery.animate接受回调并在动画完成后运行它,看看:

$( "#element").animate({
    opacity: 0.25
  }, 5000, function() {
    // animation is complete
    // play your sound here
});

您可以在documentation中找到更多示例。

答案 1 :(得分:4)

@ Remek的答案是正确的,如果您使用jQuery进行动画处理,但您还标记了TweenJS,因此您可以使用asyncio,它将函数调用排入TweenJS队列。

call

您可以在Tween队列中或最后使用呼叫。请注意,补间也会调度事件,但只有一个“更改”事件,而不是“完整”事件,因为补间可以循环,反转和不断链接以添加其他动画,因此它们并不真正“完成”。这就是createjs.Tween.get(obj) .to({x:1000}, 3000, createjs.Ease.quadOut) .call(function(tween) { createjs.Sound.play("soundId"); }); 方法存在的原因。

call方法也接受参数和函数范围。 http://www.createjs.com/docs/tweenjs/classes/Tween.html#method_call

关于“人类手势”的问题,这主要适用于移动平台,您必须点击某些内容来播放声音(解锁音频上下文,因此只需要发生一次)。最新的SoundJS会自动为您处理,当您按下时自动播放空声(即使是滚动)。请注意,使用滚动来执行此操作已被弃用,因此用户可能必须“单击/点击”某些内容才能使其正常工作 - 但在这种情况下,SoundJS将为您处理解锁。

干杯。