Im Moment habe ich Shapes, die erstellt werden, wenn der Benutzer das Mausrad dreht und nach einer gewissen Zeit langsam verblassen. Wie würde ich eine Spur hinter jeder Form erzeugen, die ihr folgt und auch langsam verschwindet? Hier ist der Code:Wie hinterlasse ich eine Spur hinter meinen Formen in Leinwand?
var canvas;
var context;
var triangles = [];
var timer;
function init() {
canvas = document.getElementById('canvas');
context = canvas.getContext("2d");
resizeCanvas();
window.addEventListener('resize', resizeCanvas, false);
window.addEventListener('orientationchange', resizeCanvas, false);
canvas.onwheel = function(event) {
handleClick(event.clientX, event.clientY);
};
var timer = setInterval(resizeCanvas, 30);
}
function Triangle(x, y, triangleColor) {
this.x = x;
this.y = y;
this.triangleColor = triangleColor;
this.vx = Math.random() * 30 - 15;
this.vy = Math.random() * 30 - 15;
this.time = 100;
}
function handleClick(x, y) {
var colors = [
[0, 170, 255],
[230, 180, 125],
[50, 205, 130]
];
var triangleColor = colors[Math.floor(Math.random() * colors.length)];
triangles.push(new Triangle(x, y, triangleColor));
for (var i = 0; i < triangles.length; i++) {
drawTriangle(triangles[i]);
}
}
function drawTriangle(triangle) {
context.beginPath();
context.moveTo(triangle.x, triangle.y);
context.lineTo(triangle.x + 25, triangle.y + 25);
context.lineTo(triangle.x + 25, triangle.y - 25);
var c = triangle.triangleColor
context.fillStyle = 'rgba(' + c[0] + ', ' + c[1] + ', ' + c[2] + ', ' + (triangle.time/100) + ')';
context.fill();
}
function resizeCanvas() {
canvas.width = window.innerWidth - 20;
canvas.height = window.innerHeight - 20;
fillBackgroundColor();
for (var i = 0; i < triangles.length; i++) {
var t = triangles[i];
drawTriangle(t);
if (t.x + t.vx > canvas.width || t.x + t.vx < 0)
t.vx = -t.vx
if (t.y + t.vy > canvas.height || t.y + t.vy < 0)
t.vy = -t.vy
if (t.time === 0) {
triangles.splice(i, 1);
}
t.time -= 1;
t.x += t.vx;
t.y += t.vy;
}
}
function fillBackgroundColor() {
context.fillStyle = "black";
context.fillRect(0, 0, canvas.width, canvas.height);
}
init()
<canvas id="canvas" width="500" height="500"></canvas>