我写的咋执行不了呢?请大神帮看看!~

来源:2-2 绘制直线、多边形和七巧板

weberrookie

2015-02-02 14:25

var tangram=[

{p:[{x:0,y:0},{x:800,y:0},{x:400,y:400}],color:"#caff67"},

{p:[{x:0,y:0},{x:400,y:400},{x:0,y:800}],color:"#67becf"},

{p:[{x:800,y:0},{x:800,y:0},{x:600,y:600},{x:600,y:200}],color:"#ef3d61"},

{p:[{x:600,y:200},{x:600,y:600},{x:400,y:400}],color:"#f9f5la"},

{p:[{x:400,y:400},{x:600,y:600},{x:400,y:800},{x:200,y:600}],color:"#a594c0"},

{p:[{x:200,y:600},{x:400,y:800},{x:0,y:800}],color:"#fa8ecc"},

{p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:"#f6ca29"},

]


window.onload=function(){

var canvas = document.getElementById("canvas");

canvas.width = 800;

canvas.height = 800;

var context = canvas.getContext("2d");

for(var i=0;i<tangram.length;i++){

draw(tangram[i],context);

//alert('aaaa')

}

}

function draw(piece,cxt){

cxt.beginPath();

cxt.moveTo(piece.p[0].x,piece.p[0].y);

for(var i=1 ; i<piece.p.lenght ; i++ ){

cxt.lineTo( piece.p[i].x , piece.p[i].y );

cxt.closePath();

cxt.fillStyle=piece.color;

cxt.fill();//填充色

}

}

写回答 关注

4回答

  • hookdown
    2015-03-26 22:26:04

    for(var i=1 ; i<piece.p.lenght ; i++ ){

    cxt.lineTo( piece.p[i].x , piece.p[i].y );

    cxt.closePath();

    cxt.fillStyle=piece.color;

    cxt.fill();//填充色

    }

    }

    这里有问题

        for(var i=1;i<piece.p.length;i++)
                cxt.lineTo(piece.p[i].x,piece.p[i].y);//应该只有这一条语句包含在for循环中


    完整代码如下:

    <!DOCTYPE html>
    <html>
      <head>
        <title>index.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

      </head>
     
      <body>
        <canvas id="canvas"  style="border:1px solid #aaa;
        display:block;margin:50px auto;">当前浏览器不支持canvas
        </canvas>  

      <script type="text/javascript">
          var tangram=[
              {p:[{x:0,y:0},{x:800,y:0},{x:400,y:400}],color:"#caff67"},
              {p:[{x:0,y:0},{x:400,y:400},{x:0,y:800}],color:"#67becf"},
              {p:[{x:800,y:0},{x:800,y:0},{x:600,y:600},{x:600,y:200}],color:"#ef3d61"},
              {p:[{x:600,y:200},{x:600,y:600},{x:400,y:400}],color:"#f9f51a"},
              {p:[{x:400,y:400},{x:600,y:600},{x:400,y:800},{x:200,y:600}],color:"#a594c0"},
              {p:[{x:200,y:600},{x:400,y:800},{x:0,y:800}],color:"#fa8ecc"},
              {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:"#f6ca29"},
              ];
              
              
        window.onload=function(){
        
           var canvas=document.getElementById('canvas');
           canvas.width=800;
           canvas.height=800;

           
           var context=canvas.getContext('2d');
        
        for(var i=0;i<tangram.length;i++)
            draw(tangram[i],context)
        
        }
        
        function draw(piece,cxt){
            cxt.beginPath();
            cxt.moveTo(piece.p[0].x,piece.p[0].y);
            for(var i=1;i<piece.p.length;i++)
                cxt.lineTo(piece.p[i].x,piece.p[i].y);
            cxt.closePath();
            
            cxt.fillStyle=piece.color;
            cxt.fill();
            
            
            cxt.strokeStyle="black";
            cxt.lineWidth=3;
            cxt.stroke();
        }
      </script>
     
      </body>
    </html>


  • Minya
    2015-02-05 16:47:49

    var tangram=[

    {p:[{x:0,y:0},{x:800,y:0},{x:400,y:400}],color:"#caff67"},

    {p:[{x:0,y:0},{x:400,y:400},{x:0,y:800}],color:"#67becf"},

    {p:[{x:800,y:0},{x:800,y:0},{x:600,y:600},{x:600,y:200}],color:"#ef3d61"},

    {p:[{x:600,y:200},{x:600,y:600},{x:400,y:400}],color:"#f9f5la"},

    {p:[{x:400,y:400},{x:600,y:600},{x:400,y:800},{x:200,y:600}],color:"#a594c0"},

    {p:[{x:200,y:600},{x:400,y:800},{x:0,y:800}],color:"#fa8ecc"},

    {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:"#f6ca29"},

    ]


     window.onload = function(){

      var canvas=document.getElementById('canvas');

      canvas.width=800;

    canvas.height=800;

    var context=canvas.getContext('2d');

    for ( var i=0 ; i<tangram.length; i++)

    draw(tangram[i], context )

     }

       function draw(pice , cxt ){

      cxt.beginPath()

    cxt.moveTo(pice.p[0].x , pice.p[0].y);

    for (var i=1; i<pice.p.length ; i++) 

      cxt.lineTo(pice.p[i].x,pice.p[i].y);

      cxt.closePath(); 

      cxt.fillStyle=pice.color;

      cxt.fill();

      }


  • Setli
    2015-02-02 15:19:33

    function draw(piece,cxt){

        cxt.beginPath();

        cxt.moveTo(piece.p[0].x,piece.p[0].y);

        for(var i= 1; i<piece.p.length; i++){

            cxt.lineTo(piece.p[i].x,piece.p[i].y);

            }

         cxt.closePath();

        

         cxt.fillStyle=piece.color;

         cxt.fill();

        

         cxt.strokeStyle="black";

         cxt.lineWidth=3;

         cxt.stroke();

    }


    weberr...

    就是这么写的啊,就是执行不了

    2015-02-02 15:22:33

    共 1 条回复 >

  • Setli
    2015-02-02 15:17:02

    <canvas id="convas" style="border:#000 solid 1px; display:block; margin:50px auto">该浏览器不支持canvas</canvas> 

    不知道你前面有没有写上这个

    weberr...

    写了啊~

    2015-02-02 15:20:11

    共 1 条回复 >

炫丽的倒计时效果Canvas绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96746 学习 · 1000 问题

查看课程

相似问题