为了账号安全,请及时绑定邮箱和手机立即绑定

我的for循环为什么不起作用?只能画出一个星星

$("#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();
}

正在回答

4 回答

我也遇到类似情况,写在for循环里面就只能出来一个星星,后面我把控制for循环的变量i改成了另外的名字就好了,不知道是不是这个i和for循环里面的方法中含有的变量冲突,但是不应该啊,那些都是局部变量。

0 回复 有任何疑惑可以回复我~

我怎么觉得你第一步for循环中的canvas会出错呢? canvas是在sky()中定义出来的局部变量,你确定在上面的循环中能用到?

0 回复 有任何疑惑可以回复我~
#1

白水向前冲 提问者

var canvas =document.getElementById("canvas"); var context=canvas.getContext("2d"); 我在上面定义了全局变量,没帖出来
2015-01-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我的for循环为什么不起作用?只能画出一个星星

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信