加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

html5实现的遮罩动画

(2012-09-19 17:45:44)
标签:

html5

canvas

动画

遮罩

css3

it

分类: html5

 

 

源代码如下:


  1.  
  2.       
  3.         "Content-Type" content="text/html; charset=utf-8">  
  4.           
  5.    
  6.         "text/css">  
  7.             body{  
  8.                 margin:0px;  
  9.             }  
  10.           
  11.    
  12.         "text/javascript">  
  13.    
  14.             var imageCanvas;  
  15.             var maskCanvas;  
  16.             var imageContext;  
  17.             var maskContext;  
  18.             var frameCount=0;  
  19.             var nextFrames=0;  
  20.             var maskX=225;  
  21.             var maskY=160;  
  22.             var maskSpeedX=0;  
  23.             var maskSpeedY=0;  
  24.             var MASK_R=75;  
  25.             var CANVAS_WIDTH=500;  
  26.             var CANVAS_HEIGHT=320;  
  27.    
  28.             function pageInit(){  
  29.                 imageCanvas=document.createElement_x("canvas");  
  30.                 imageCanvas.width=CANVAS_WIDTH;  
  31.                 imageCanvas.height=CANVAS_HEIGHT;  
  32.                 document.body.appendChild(imageCanvas);  
  33.                 imageCanvas.style.position="absolute";  
  34.                 imageContext=imageCanvas.getContext("2d");  
  35.                 var img=new Image();  
  36.                 img.onload=function(){  
  37.                     imageContext.drawImage(img,0,0);  
  38.                 }  
  39.                 img.src="/uploads/allimg/120621/1_120621112049_1.jpg";  
  40.    
  41.                 maskCanvas=document.createElement_x("canvas");  
  42.                 maskCanvas.width=CANVAS_WIDTH;  
  43.                 maskCanvas.height=CANVAS_HEIGHT;  
  44.                 document.body.appendChild(maskCanvas);  
  45.                 maskCanvas.style.position="absolute";  
  46.                 maskContext=maskCanvas.getContext("2d");  
  47.    
  48.                 resetSpeed();  
  49.                 setInterval(moveMask,20);  
  50.             }  
  51.    
  52.             function resetSpeed(){  
  53.                 maskSpeedX=Math.random()*10-5;  
  54.                 maskSpeedY=Math.random()*10-5;  
  55.    
  56.                 resetNextFrames();  
  57.             }  
  58.    
  59.             function resetNextFrames(){  
  60.                 nextFrames=Math.random()*125+25;  
  61.             }  
  62.    
  63.             function moveMask(){  
  64.    
  65.                 maskContext.clearRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);  
  66.                 maskContext.globalCompositeOperation="source-over";  
  67.                 maskContext.fillRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT);  
  68.                 maskContext.globalCompositeOperation="destination-out";  
  69.                 maskContext.beginPath();  
  70.                 maskContext.arc(maskX,maskY,MASK_R,0,Math.PI*2,true);  
  71.                 maskContext.fill();  
  72.    
  73.                 maskX+=maskSpeedX;  
  74.                 maskY+=maskSpeedY;  
  75.    
  76.                 if(maskX>=CANVAS_WIDTH-MASK_R){  
  77.                     maskSpeedX=-Math.abs(maskSpeedX);  
  78.                 }  
  79.                 if(maskX<=MASK_R){  
  80.                     maskSpeedX=Math.abs(maskSpeedX);  
  81.                 }  
  82.                 if(maskY>=CANVAS_HEIGHT-MASK_R){  
  83.                     maskSpeedY=-Math.abs(maskSpeedY);  
  84.                 }  
  85.                 if(maskY<=MASK_R){  
  86.                     maskSpeedY=Math.abs(maskSpeedY);  
  87.                 }  
  88.    
  89.                 frameCount++;  
  90.                 if(frameCount>nextFrames){  
  91.                     frameCount=0;  
  92.                     resetSpeed();  
  93.                 }  
  94.             }  
  95.           
  96.       
  97.     "pageInit();">  
  98.    
  99.       
  100.  
  101.   

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有