在Howler.js中,只有当另一个不播放时才能播放声音?

时间:2016-05-02 17:54:08

标签: javascript html5 audio html5-audio howler.js

我正在用HTML5画布制作一个打砖块。我已经加载了音乐和声音,它们工作正常。 我的问题是,有时候在我的代码中我用球拍击球时,它会检测到2次,3次或更多次碰撞,声音会在那一刻播放2,3次或更多次。

这里我有一个声音行为的例子。

https://u.pomf.is/mgmhsq.webm(在第二个16发生,在第二个23发挥-once-就好了。)

以下是我的一些代码

sound = new Howl({
    urls: ['assets/sounds.mp3'],
    volume: 0.2,
    buffer: true,
    sprite: {
        die: [1120, 1010],      // 1.120 start, 1.010 duration
        laser: [12485, 290],    // 12.485 start, 0.290 duration
        vaushit: [16816, 770],  // 16.816 start, 0.770 duration
        brickhit: [18616, 770]  // 18.616 start, 0.770 duration
    },
    onload: function() {
        init(); // when every music or sound is loaded
    }
});

然后我有这样的事情。 (检查最后一行)

    if (hit.c) {
        // If hit checkings
        switch(result.d) {
            case "top":                                
                ball.y = paddle.y - ball.radius;
                ball.angle = -ball.angle;
                break;
            case "right":                              
                ball.x = paddle.x + paddle.width + ball.radius;
                ball.angle = ball.angle + Math.PI;
                break;
            case "left":                               
                ball.x = paddle.x - ball.radius;
                ball.angle = ball.angle + Math.PI;
                break;
        }
        // spin effect
        if (inputStates.right) {
            ball.angle *= (ball.angle < 0 ? 1 : 1.5);
        } else if (inputStates.left) {
            ball.angle *= (ball.angle > 0 ? 1 : 1.5);
        }
        sound.play('vaushit'); // here!!
    }

我需要检查声音当前是否正在播放。

我已经检查了这个:https://github.com/goldfire/howler.js

可能与on: Call/set custom events. Multiple events can be added by calling this multiple times.

有关

我不知道怎么用这个方法!我希望你们能解决我的问题。

0 个答案:

没有答案