H5canvas 2:路径,画七巧板
我们小时候应该都玩过七巧板,小小几块板可以拼出很多的图形,我挑了个简单的图形拼凑了一只小船:
写起来格外简单,代码都是相同的,只是改了几个坐标,主要使用了
beginPath(),
fillStyle(),
closePath()
fill()
这几个方法
以下是js代码(html 和css代码都是一样的,可参考我之前的文章, 或者直接写 <canvas></canvas>
就可以了)
window.function(){
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
//船帆
ctx.beginPath();
ctx.fillStyle="coral";
ctx.moveTo(250,100);
ctx.lineTo(250,300);
ctx.lineTo(350,200);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.fillStyle="cornflowerblue";
ctx.moveTo(250,300);
ctx.lineTo(450,300);
ctx.lineTo(350,200);
ctx.closePath();
ctx.fill();
//船身
ctx.beginPath();
ctx.fillStyle="#0fa";
ctx.moveTo(450-200*1.4,300);
ctx.lineTo(450-150*1.4,300+50*1.4);
ctx.lineTo(450-100*1.4,300);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.fillStyle="plum";
ctx.moveTo(450-100*1.4,300);
ctx.lineTo(450-100*1.4,300+50*1.4);
ctx.lineTo(450-150*1.4,300+50*1.4);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.fillStyle="sandybrown";
ctx.moveTo(450-100*1.4,300);
ctx.lineTo(450-100*1.4,300+50*1.4);
ctx.lineTo(450-50*1.4,300+50*1.4);
ctx.lineTo(450-50*1.4,300);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.fillStyle="darkgrey";
ctx.moveTo(450-50*1.4,300);
ctx.lineTo(450,300);
ctx.lineTo(450-50*1.4,300+50*1.4);
ctx.closePath();
ctx.fill();
ctx.beginPath();
ctx.fillStyle="bisque";
ctx.moveTo(450,300);
ctx.lineTo(450-50*1.4,300+50*1.4);
ctx.lineTo(450,300+50*1.4);
ctx.lineTo(450+50*1.4,300);
ctx.closePath();
ctx.fill();
}
这样,一个简单的七巧板就拼凑完成了,用这种方法也可以做出别的动画出来,框架都是相同的。