2

我很难在我目前正在开发的游戏中播放声音。

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

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

谁有一些技巧,请在这里分享。谢谢。

已添加 =============

我在移动设备中遇到了这个问题。

4

2 回答 2

6

Sample of your code will be helpful, but this question is tagged jQuery so I assume you are looking for solution for this library. And jQuery.animate takes callback and runs it after animation is done, look:

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

You can find more examples in documentation.

于 2016-10-29T13:58:23.500 回答
4

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

createjs.Tween.get(obj)
    .to({x:1000}, 3000, createjs.Ease.quadOut)
    .call(function(tween) {
        createjs.Sound.play("soundId");
    });

您可以在 Tween 队列中或最后使用呼叫。请注意,补间也派发事件,但只有“更改”事件,而不是“完成”事件,因为补间可以循环、反转和不断链接以添加额外的动画,因此它们并不真正“完成”。这就是该call方法存在的原因。

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


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

干杯。

于 2016-10-30T18:09:44.020 回答