В 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.
Я не знаю, как использовать этот метод в любом случае! Я надеюсь, что вы, ребята, можете пролить свет на мою проблему.