次のコードは、関数が初めて呼び出されたときに機能します。しかし、私がsetup()関数を再び呼び出すと、速度が上がります(画像がより速く落ちます)。私は関数が呼び出されるたびに速度を上げることなく初期速度を維持する方法を理解しようとしています。私はこれを数日間続けてきました。どんな助けもありがとう。Javascriptで落ちる画像(画像があまりにも急速に落ちる)
(私はこれが必要な理由:ユーザーが画像をクリックすると4種類の画像が切り替わることができますが、画像をクリックすると機能が起動します。ユーザーは、秋の速度が増加をクリックする。)
<canvas id="canvasRegn" width="1000" height="450"style="margin:100px;position:relative;z-index:999999;opacity:0.2;">
var ctx;
var imgBg;
var imgDrops;
var x = 0;
var y = 0;
var noOfDrops = 50;
var fallingDrops = [];
function drawBackground(){
ctx.drawImage(imgBg, 0, 0); //Background
}
function draw() {
drawBackground();
for (var i=0; i< noOfDrops; i++)
{
ctx.drawImage (fallingDrops[i].image, fallingDrops[i].x, fallingDrops[i].y); //The rain drop
fallingDrops[i].y += fallingDrops[i].speed; //Set the falling speed
if (fallingDrops[i].y > 450) { //Repeat the raindrop when it falls out of view
fallingDrops[i].y = -25 //Account for the image size
fallingDrops[i].x = Math.random() * 1000; //Make it appear randomly along the width
}
}
}
function setup() {
var canvas = document.getElementById('canvasRegn');
if (canvas.getContext) {
ctx = canvas.getContext('2d');
imgBg = new Image();
imgBg.src = "/BACKGROUND.png";
setInterval(draw, 36);
for (var i = 0; i < noOfDrops; i++) {
var fallingDr = new Object();
fallingDr["image"] = new Image();
fallingDr.image.src = '/image.png';
fallingDr["x"] = Math.random() * 1000;
fallingDr["y"] = Math.random() * 5;
fallingDr["speed"] = 3 + Math.random() * 5;
fallingDrops.push(fallingDr);
}
}
}
setup();
非常に良いです!ありがとうございました! – OBz