HTML5キャンバスでアルカノイドを作っています。音楽とサウンドをロードしましたが、正常に動作しています。私の問題は、コードでパドルでボールを打つと、2、3、またはそれ以上の衝突が検出され、その瞬間に音が 2、3、またはそれ以上再生されることがあることです。
ここに、音の振る舞いの例があります。
https: /
これが私のコードの一部です
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.
とにかくこの方法の使い方がわかりません!皆さんが私の問題に光を当てることができることを願っています。