<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="canvas" style="margin:0 auto;border:1px #ddd solid">
The current browser does not support Canvas, can replace the browser a try!
</canvas>
<script>
var searchLight = {
x : 400,
y : 400,
radius : 150,
vx : Math.random() * 5 10,
vy : Math.random() * 5 10
}
var isIncrease = true;
window.onload = function(){
var canvas = document.getElementById('canvas');
canvas.width = 1024;
canvas.height = 768;
if(canvas.getContext('2d')){
var context = canvas.getContext('2d');
setInterval(function(){
draw(context);
update(canvas.width,canvas.height);
},40);
}else{
alert('当前游览器不支持Canvas,请更换游览器后再试!');
}
}
function draw(cxt){
var canvas = cxt.canvas;
cxt.clearRect(0,0,canvas.width,canvas.height);
cxt.save();
cxt.beginPath();
cxt.fillStyle = "#000";
cxt.fillRect(0,0,canvas.width,canvas.height)
cxt.closePath();
cxt.save();
cxt.translate(searchLight.x,searchLight.y);
cxt.scale(searchLight.radius,searchLight.radius);
starPath(cxt);
cxt.fillStyle = "#fff";
cxt.fill();
cxt.restore();
cxt.clip();
cxt.font = "bold 150px Arial";
cxt.textAlign = "center";
cxt.textBaseline = "middle";
cxt.fillStyle = "#058";
cxt.fillText("Canvas",canvas.width/2,canvas.height/4);
cxt.fillText("Canvas",canvas.width/2,canvas.height/2);
cxt.fillText("Canvas",canvas.width/2,canvas.height * 3/4);
cxt.restore();
}
function starPath(cxt){
cxt.beginPath();
for(var i=0;i<5;i ){
cxt.lineTo(Math.cos( (18 i*72) / 180 * Math.PI ),
-Math.sin( (18 i*72) / 180 * Math.PI ));
cxt.lineTo(Math.cos( (54 i*72) / 180 * Math.PI )*0.5,
-Math.sin( (54 i*72) / 180 * Math.PI )*0.5);
}
cxt.closePath();
}
function update(canvasWidth,canvasHeight){
// rot = 1;
// searchLight.x = searchLight.vx;
// searchLight.y = searchLight.vy;
// if(searchLight.x - searchLight.radius <= 0){
// searchLight.vx = -searchLight.vx;
// searchLight.x = searchLight.radius;
// }
// if(searchLight.x searchLight.radius >= canvasWidth){
// searchLight.vx = -searchLight.vx;
// searchLight.x = canvasWidth - searchLight.radius;
// }
// if(searchLight.y - searchLight.radius <= 0){
// searchLight.vy = -searchLight.vy;
// searchLight.y = searchLight.radius;
// }
// if(searchLight.y searchLight.radius >= canvasHeight){
// searchLight.vy = -searchLight.vy;
// searchLight.y = canvasHeight - searchLight.radius;
// }
if(searchLight.radius > 700)
isIncrease = false;
else if(searchLight.radius < 150)
isIncrease = true;
if(isIncrease)
searchLight.radius = 5;
else
searchLight.radius -= 5;
}
</script>
</body>
</html>
更多专业前端知识,请上 【猿2048】www.mk2048.com