html5实现的遮罩动画
(2012-09-19 17:45:44)
标签:
html5canvas动画遮罩css3it |
分类: html5 |
源代码如下:
-
-
-
"Content-Type" content="text/html; charset=utf-8" > -
-
-
"text/css"> -
body{ -
margin:0px; -
} -
-
-
"text/javascript"> -
-
var imageCanvas; -
var maskCanvas; -
var imageContext; -
var maskContext; -
var frameCount=0; -
var nextFrames=0; -
var maskX=225; -
var maskY=160; -
var maskSpeedX=0; -
var maskSpeedY=0; -
var MASK_R=75; -
var CANVAS_WIDTH=500; -
var CANVAS_HEIGHT=320; -
-
function pageInit(){ -
imageCanvas=document.createElement_x("canvas"); -
imageCanvas.width=CANVAS_WIDTH; -
imageCanvas.height=CANVAS_HEIGHT; -
document.body.appendChild(imageCanvas); -
imageCanvas.style.position="absolute"; -
imageContext=imageCanvas.getContext("2d"); -
var img=new Image(); -
img.onload=function(){ -
imageContext.drawImage(img,0,0); -
} -
img.src="/uploads/allimg/120621/1_120621112049_1.jpg"; -
-
maskCanvas=document.createElement_x("canvas"); -
maskCanvas.width=CANVAS_WIDTH; -
maskCanvas.height=CANVAS_HEIGHT; -
document.body.appendChild(maskCanvas); -
maskCanvas.style.position="absolute"; -
maskContext=maskCanvas.getContext("2d"); -
-
resetSpeed(); -
setInterval(moveMask,20); -
} -
-
function resetSpeed(){ -
maskSpeedX=Math.random()*10-5; -
maskSpeedY=Math.random()*10-5; -
-
resetNextFrames(); -
} -
-
function resetNextFrames(){ -
nextFrames=Math.random()*125+25; -
} -
-
function moveMask(){ -
-
maskContext.clearRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT); -
maskContext.globalCompositeOperation ="source-over"; -
maskContext.fillRect(0,0,CANVAS_WIDTH,CANVAS_HEIGHT); -
maskContext.globalCompositeOperation ="destination-out"; -
maskContext.beginPath(); -
maskContext.arc(maskX,maskY,MASK_R,0,Math.PI*2,true); -
maskContext.fill(); -
-
maskX+=maskSpeedX; -
maskY+=maskSpeedY; -
-
if(maskX>=CANVAS_WIDTH-MASK_R){ -
maskSpeedX=-Math.abs(maskSpeedX); -
} -
if(maskX<=MASK_R){ -
maskSpeedX=Math.abs(maskSpeedX); -
} -
if(maskY>=CANVAS_HEIGHT-MASK_R){ -
maskSpeedY=-Math.abs(maskSpeedY); -
} -
if(maskY<=MASK_R){ -
maskSpeedY=Math.abs(maskSpeedY); -
} -
-
frameCount++; -
if(frameCount>nextFrames){ -
frameCount=0; -
resetSpeed(); -
} -
} -
-
-
"pageInit();"> -
-
-
-