$("#sky").bind("click",function () {
for (var i = 0; i < 200; i++) {
var r = Math.random() * 10 + 10;
var x = Math.random() * canvas.width;
var y = Math.random() * canvas.height;
var a = Math.random() * 360;
sky(x, y, r, r / 2, a);
}
}
)
function sky(x,y,outerR,innerR,rot){
var canvas = document.getElementById("canvas");
canvas.width = 1600;
canvas.height = 700;
var context=canvas.getContext("2d");
context.fillStyle="black";
context.fillRect(0,0,canvas.width,canvas.height);
context.beginPath();
for(var i=0;i<5;i++){
context.lineTo(Math.cos((18+i*72-rot)/180*Math.PI)*outerR+x,
-Math.sin((18+i*72-rot)/180*Math.PI)*outerR+y);
context.lineTo(Math.cos((54+i*72-rot)/180*Math.PI)*innerR+x,
-Math.sin((54+i*72-rot)/180*Math.PI)*innerR+y);
}
context.closePath();
context.fillStyle="#fb3"
context.strokeStyle="#fd5"
context.lineWidth=3;
context.lineJoin="round";
/* 线的三种相交方式 bevel round
context.lineJoin="bevel"; */
context.fill();
context.stroke();
}
我也遇到类似情况,写在for循环里面就只能出来一个星星,后面我把控制for循环的变量i改成了另外的名字就好了,不知道是不是这个i和for循环里面的方法中含有的变量冲突,但是不应该啊,那些都是局部变量。
我怎么觉得你第一步for循环中的canvas会出错呢? canvas是在sky()中定义出来的局部变量,你确定在上面的循环中能用到?