问答详情
源自:2-2 绘制直线、多边形和七巧板

求解决困惑1111111

var tangram=[

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

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

{p:[{x:800,y:0},{x:800,y:400},{x:600,y:600}],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:200,y:600}],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");

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

// context.moveTo(0,0);

// context.lineTo(100,100);

// context.strokeStyle="#000";

// context.stroke();

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=0;i<piece.length;i++){

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

}

cxt.closePath();


cxt.fillStyle=piece.color;

cxt.fill();

}

一模一样,为什么没有效果?

提问者:qq_秋忆_0 2016-09-01 16:18

个回答

  • 湛瞳
    2016-09-06 09:27:30

    除此之外你的点也有问题,画出来的七巧板有缺失。

  • SummerWang3150009
    2016-09-02 14:19:32

    问题出在draw函数里面  把for(var i=0;i<piece.length;i++)改成for(var i=1;i<piece.p.length;i++)  就可以了  你要清楚这个循环循环的是 tangram数组里key值p的value 

  • rain_late
    2016-09-02 13:32:42

    for(var i=0;i<piece.length;i++){看看哪里不一样