//read where the click is made
$(document).click(function(e) {
var x = event.clientX;
var y = event.clientY;
drawCircle(x,y);
});
//array used for random colors of circles
var color = ["#E72B8E", "#238A9B", "#F05C3F"];
//setting canvas and its size
var c = document.getElementById("canvas");
c.width = window.innerWidth;
c.height = window.innerHeight;
var ctx = c.getContext("2d");
//function to draw circles
function drawCircle(x,y){
//randomly chose color and size for circles
var randC = color[Math.floor(Math.random() * color.length)];
var randS = Math.floor(Math.random() * (80 - 30)) + 30;
//draw circles
ctx.beginPath();
ctx.arc(x,y,randS,0,2*Math.PI);
//make gradient for random color and fill
var grd=ctx.createLinearGradient(0,0,170,0);
grd.addColorStop(0,randC);
grd.addColorStop(1,"transparent");
ctx.fillStyle=grd;
ctx.fill();
ctx.closePath();
}
所以,我试图做的是每次单击画布并使其掉下时画一个圆圈。使用JavaScript在HTML5画布上绘制倍数下降圆圈
我的第一个问题是我被困在如何让我的圈子留在画布上。每次点击时,我都会画出一个新的圆圈,但之前绘制的圆圈已经消失。所以,我试图在drawCircle函数外面设置画布线,所以无论何时调用函数,它都不会重置画布。现在点击根本不会画圆。功能之外的这些线是否会影响某些内容?
我的第二个问题是我想要有从100%颜色到透明的渐变圆,但似乎渐变是相对于画布中圆的位置。例如,如果我点击框架的左侧边缘,渐变效果会以我想要的方式完美呈现,但随着渐变效果的变化,渐变的透明部分会变得更大,一旦我点击了渐变的中间部分框架,我根本看不到这个圆圈。而渐变的透明部分对我来说似乎很黑。我能做些什么来解决它?
最后,一旦我完全搞清楚如何以我想要的方式绘制多个圆,我最终会让它们像雪花一样掉下来。有没有可以促进它的功能?
非常感谢!