<canvas>元素最后一篇制作简单动画
具体步骤
1.自定义一个函数,用于图形的移动或其他动作
3.使用setImage()方法设置动画执行的间隔时间,反复执行自定义函数
一大段代码来袭
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无标题文档</title> 6 <script type="text/javascript" language="jscript" src="js6-15.js"></script> 7 </head> 8 9 <body onLoad="pageload()"> 10 <canvas id="cnvMain" height="280px" width="280px"></canvas> 11 12 </body> 13 </html>
js
1 // JavaScript Document 2 function $$(id){ 3 return document.getElementById(id); 4 } 5 var intI,intJ,intX; 6 //自定义加载函数 7 function pageload(){ 8 var cnv=$$("cnvMain"); 9 var cxt=cnv.getContext("2d"); 10 drawFace(cxt); 11 intI=1; 12 intJ=21; 13 setInterval(moveFace,100); 14 } 15 //调用自定义函数绘制脸部形状 16 function drawFace(cxt){ 17 drawCirc(cxt,"#666",30,80,30,2,true); 18 drawCirc(cxt,"#fff",20,70,5,2,true); 19 drawCirc(cxt,"#fff",40,70,5,2,true); 20 drawCirc(cxt,"#fff",30,80,18,1,false); 21 22 } 23 //根据参数绘制各类圆形 24 function drawCirc(cxt,strColor,intX,intY,intR,intH,blnFill){ 25 cxt.beginPath(); 26 cxt.arc(intX,intY,intR,0,Math.PI*intH,blnFill); 27 if(blnFill){ 28 cxt.fillStyle=strColor; 29 cxt.fill(); 30 }else{ 31 cxt.lineWidth=2; 32 cxt.strokeStyle=strColor; 33 cxt.stroke(); 34 } 35 cxt.closePath(); 36 } 37 //实现往返移动圆形脸部的功能 38 function moveFace(){ 39 var cnv=$$("cnvMain"); 40 var cxt=cnv.getContext("2d"); 41 cxt.clearRect(0,0,280,190); 42 if(intI<20){ 43 intI+=1; 44 intX=intI; 45 }else{ 46 if(intJ>0){ 47 intJ-=1; 48 intX=-intJ; 49 } 50 } 51 cxt.translate(intX,0); 52 drawFace(cxt); 53 }
步骤
定义四个函数
pageload()加载页面时调用
drawface()绘制卡通笑脸
drawcirc()根据传递的参数值,使用fill与stroke方法绘制指定位置、填充色、半径、弧度的圆形;
moveface()用于实现往返移动笑脸的功能
在drawface中调用了四次drawCirc()函数
在moveface中,先根据自增量intI的值使用translate方法向右移动卡通笑脸
当intI大于20时,转为获取intJ的值,根据自检量“intU”的值,使用setinterval()方法按时反复执行函数moveFace()