您的位置:首页 > Web前端 > HTML

canvas-8searchLight4.html

2015-11-23 15:10 447 查看
<!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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: