Что я хочу сделать, это функция 'addEventListener'. Когда клик нажимается, и появляется капля дождя, звучит дрожащий звук. Поэтому, независимо от того, сколько раз вы нажимаете, звук всегда будет воспроизводиться.addEventListener звук при нажатии
Я понятия не имел, как это называется, и мой профессор предложил это. Однако, когда я расчесывал google, все, что я нахожу, это щелчки на кнопках или вещи JQuery. Я не хочу кнопку, и мне не разрешено использовать JQuery.
Как всегда, я ищу только толчок в правильном направлении.
Благодарим за помощь, оказанную вами до сих пор.
var canvas;
var context;
var drops = [];
var squares = [];
function Drop(x,y,color){
this.x = x;
this.y = y;
this.color = color;
this.dy = Math.random();
}
function Square(x,y,w,color){
this.sx = x;
this.sy = y;
this.sw = w;
this.color = color;
this.qy = Math.random();
}
function init(){
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
alert("Hello!\nClick on the screen for rain drops!");
window.addEventListener('resize', resizeCanvas, false);
window.addEventListener('orientationchange', resizeCanvas, false);
resizeCanvas();
canvas.onclick = function(event){
handleClick(event.clientX, event.clientY);
};
setInterval(handleClick,5);
}
function handleClick(x,y,w){
var found = false;
for(var i = 0; i<drops.length; i++){
d = Math.sqrt((drops[i].x-x)*(drops[i].x-x) + (drops[i].y-y)*(drops[i].y-y));
if(d<=5){
drops.splice(i,1);
found = true;
}
}
fillBackgroundColor();
if(!found){
var colors = ["#000080", "#add8e6", "blue"];
var color = colors[Math.floor(Math.random()*colors.length)];
drops.push(new Drop(x,y,color));
squares.push(new Square(x,y,w,color));
}
for(var i = 0; i<drops.length; i++){
drawDrop(drops[i]);
}
for(var i = 0; i<squares.length; i++){
drawSquare(squares[i]);
}
}
function drawDrop(drop){
context.beginPath();
context.arc(drop.x, drop.y, 5, 0, Math.PI);
context.fillStyle = drop.color;
context.moveTo(drop.x - 5, drop.y);
context.lineTo(drop.x, drop.y - 7);
context.lineTo(drop.x + 5, drop.y);
context.closePath();
context.fill();
if (drop.y + drop.dy > canvas.height || drop.y + drop.dy < 0)
drop.dy != -drop.dy;
drop.y += drop.dy;
};
function drawSquare(square){
var sw = Math.floor(4);
var sx = Math.floor(Math.random() * canvas.width);
var sy = Math.floor(Math.random() * canvas.height);
context.beginPath();
context.rect(sx, sy, sw, sw);
context.fillStyle = '#add8e6';
context.fill();
};
function fillBackgroundColor(){
context.fillStyle = 'gray';
context.fillRect(0,0,canvas.width,canvas.height);
}
function resizeCanvas(){
canvas.width = window.innerWidth - 20;
canvas.height = window.innerHeight - 20;
fillBackgroundColor();
for(var i = 0; i<drops.length; i++){
drawDrop(drops[i]);
}
for(var i = 0; i<squares.length; i++){
drawSquare(squares[i]);
}
}
function degreesToRadians(degrees) {
return (degrees * Math.PI)/180;
}
window.onload = init;
</script>
</head>
<body>
<canvas id='canvas' width=500 height=500></canvas>
</body>
Я понимаю, как это код, который вы предоставили мне работы. Но у меня уже есть ручка для дождя. Нужно ли добавлять их вместе в одну большую функцию? Могут ли они работать вместе? Благодарим вас за то, что нашли время ответить на мой вопрос. –
@ Blindman67 поднял и отметил хороший ответ, но у меня есть вопрос о части 'sound.src'. Когда я устанавливаю 'src', мне нужно' sound.load() 'перед тем, как я' sound.play() '. «Sounds.push» (звук), «позаботиться о загрузке? – zer00ne
@JazzehPlatt У вас может быть функция щелчка делать столько, сколько захотите. Вы можете вызвать функцию playSound из существующей функции капли дождя, или если вам нравится добавить второй прослушиватель событий к холсту. Оба способа будут работать нормально. – Blindman67