我正在努力学习如何在我正在开发的游戏中播放声音。
我需要在动画后播放声音,但是当我尝试调用sound.play()时。
浏览器声明您只能使用人体手势播放声音?
任何人都有一些技巧在这里分享。感谢。
ADDED ============
我在移动设备中遇到此问题。
答案 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将为您处理解锁。
干杯。