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

来源:4-1 画一片星空

白水向前冲

2015-01-26 08:49

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

写回答 关注

2回答

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

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

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

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

    白水向前冲

    var canvas =document.getElementById("canvas"); var context=canvas.getContext("2d"); 我在上面定义了全局变量,没帖出来

    2015-01-26 09:42:15

    共 1 条回复 >

Canvas绘图详解

Canvas系列教程第二课,详解Canvas各接口,让同学彻底掌握Canvas绘图

72881 学习 · 422 问题

查看课程

相似问题