В Howler.js как воспроизводить звук только когда другой не играет?

Я делаю арканоид с холстом HTML5. Я загрузил музыку и звуки, и они работают нормально. Моя проблема в том, что иногда, когда в моем коде я бью по мячу веслом, он обнаруживает 2, 3 или более столкновений, звук воспроизводится 2, 3 или более раз в этот момент.

Здесь у меня есть пример поведения звука.

https://u.pomf.is/mgmhsq.webm (во втором 16 случается, а во втором 23 играет - раз- просто отлично.)

Вот часть моего кода

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 ответов

Другие вопросы по тегам