2017-02-02 5 views
0

問題は、「Space」キーを押して新しいドロップを追加するたびに、すべてのドロップのスピードが上がり、ドロップコンストラクターのmovepi関数によってスピードが決まるということです。どんな助けもありがとう。ありがとう。 以下のコードスニペットは、スペースバーを押してテストすることができます。'ドロップ'スピードの増加を止めるには?

// Get Random // 
 
function rand(min, max) { 
 
    "use strict"; 
 
    return Math.floor((Math.random() * max) + min); 
 
} 
 

 
// Setup Canvas // 
 
var canvas = document.querySelector("#make"), 
 
    ctx = canvas.getContext("2d"); 
 

 
// Create Drop // 
 
function Drop(x, y) { 
 
    'use strict'; 
 
    // Set X and Y Position // 
 
    this.x = x; 
 
    this.y = y; 
 
    // Show Drop // 
 
    this.showpi = function() { 
 
     ctx.fillStyle = 'red'; 
 
     ctx.fillRect(x, y, 10, 10); 
 
    }; 
 
    // Move Drop // 
 
    this.movepi = function() { 
 
     y = y - 3; 
 
    }; 
 
} 
 

 
// Setup Canvas Size // 
 
function setCanvasWidth() { 
 
    "use strict"; 
 
    ctx.canvas.width = window.innerWidth; 
 
    ctx.canvas.height = window.innerHeight; 
 
} 
 

 
// Paint Over Canvas For Animation Illusion // 
 
function paintover() { 
 
    'use strict'; 
 
    ctx.fillStyle = "rgba(0, 0, 0, 0.4)"; 
 
    ctx.fillRect(0, 0, canvas.width, canvas.height); 
 
    window.requestAnimationFrame(paintover); 
 
} 
 

 
// Variables // 
 
var dropi = []; 
 
//var drop = new Drop(window.innerWidth/2, window.innerHeight); 
 

 
// Get New Drops // 
 
function drop() { 
 
    'use strict'; 
 
    var newdrops = new Drop(window.innerWidth/2, window.innerHeight); 
 
    return newdrops; 
 
} 
 

 
// Draw // 
 
function draw() { 
 
    'use strict'; 
 
    var i; 
 
    for (i = 0; i < dropi.length; i = i + 1) { 
 
     dropi[i].showpi(); 
 
     dropi[i].movepi(); 
 
    } 
 
    window.requestAnimationFrame(draw); 
 
} 
 

 
// Listen For "SpaceBar" Key Press // 
 
window.addEventListener('keydown', function pressed(x) { 
 
\t 'use strict'; 
 
\t var code = x.keyCode; 
 
     //soundfile = new Audio('blop.wav'); 
 
\t if (code === 32) { 
 
     //soundfile.play(); 
 
     dropi.push(new Drop(window.innerWidth/2, window.innerHeight)); 
 
     draw(); 
 
    } 
 
}); 
 

 
// Run // 
 
setCanvasWidth(); 
 
paintover();
canvas { 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0; 
 
    left: 0; 
 
    z-index: -1; 
 
}
<html> 
 
    <body> 
 
     <canvas id="make"></canvas> 
 
    </body> 
 
</html>

答えて

0

私の友達、私はスペースを押しドロー()を呼び出す毎回のミスを犯し、私を助けました。彼はそれを条件文に入れたので、一度だけ呼び出さなければならなかった。すべてのおかげで...

// Get Random // 
 
function rand(min, max) { 
 
    "use strict"; 
 
    return Math.floor((Math.random() * max) + min); 
 
} 
 

 
// Setup Canvas // 
 
var canvas = document.querySelector("#make"), 
 
    ctx = canvas.getContext("2d"); 
 

 
// Create Drop // 
 
function Drop(x, y) { 
 
    'use strict'; 
 
    // Set X and Y Position // 
 
    this.x = x; 
 
    this.y = y; 
 
    // Show Drop // 
 
    this.showpi = function() { 
 
     ctx.fillStyle = 'red'; 
 
     ctx.fillRect(x, y, 10, 10); 
 
    }; 
 
    // Move Drop // 
 
    this.movepi = function() { 
 
     y = y - 3; 
 
    }; 
 
} 
 

 
// Setup Canvas Size // 
 
function setCanvasWidth() { 
 
    "use strict"; 
 
    ctx.canvas.width = window.innerWidth; 
 
    ctx.canvas.height = window.innerHeight; 
 
} 
 

 
// Paint Over Canvas For Animation Illusion // 
 
function paintover() { 
 
    'use strict'; 
 
    ctx.fillStyle = "rgba(0, 0, 0, 0.4)"; 
 
    ctx.fillRect(0, 0, canvas.width, canvas.height); 
 
    window.requestAnimationFrame(paintover); 
 
} 
 

 
// Variables // 
 
var dropi = []; 
 
//var drop = new Drop(window.innerWidth/2, window.innerHeight); 
 

 
// Get New Drops // 
 
function drop() { 
 
    'use strict'; 
 
    var newdrops = new Drop(window.innerWidth/2, window.innerHeight); 
 
    return newdrops; 
 
} 
 

 
// Draw // 
 
function draw() { 
 
    'use strict'; 
 
    var i; 
 
    for (i = 0; i < dropi.length; i = i + 1) { 
 
     dropi[i].showpi(); 
 
     dropi[i].movepi(); 
 
    } 
 
    window.requestAnimationFrame(draw); 
 
} 
 

 
// Listen For Key Press // 
 
window.addEventListener('keydown', function pressed(x) { 
 
\t 'use strict'; 
 
\t var code = x.keyCode; 
 
     //soundfile = new Audio('blop.wav'); 
 
\t if (code === 32) { 
 
     //soundfile.play(); 
 
     dropi.push(new Drop(window.innerWidth/2, window.innerHeight)); 
 
     if (dropi.length === 1) { 
 
      draw(); 
 
     } 
 
    } 
 
}); 
 

 
// Run // 
 
setCanvasWidth(); 
 
paintover();
canvas { 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    top: 0; 
 
    left: 0; 
 
    z-index: -1; 
 
}
<body> 
 
     <canvas id="make"></canvas> 
 
    </body>

関連する問題