问答详情
源自:4-1 画一片星空

我的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();
}

提问者:白水向前冲 2015-01-26 08:49

个回答

  • 慕粉18674853738
    2016-07-17 20:32:38

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

  • sixGod
    2015-01-26 09:20:38

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