<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="智能社 - zhinengshe.com">
<meta name="copyright" content="智能社 - zhinengshe.com">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>智能社 - www.zhinengshe.com</title>
<style>
*{margin:0;padding:0;}
html,body{
height: 100%;
overflow: hidden;
}
body{
background: #000;
}
#c1{
background: #000;
}
</style>
<script>
function rnd(m,n){
return parseInt(m+Math.random()*(n-m));
}
document.addEventListener('DOMContentLoaded',function(){
var oC = document.getElementById('c1');
var gd = oC.getContext('2d');
var winW = document.documentElement.clientWidth;
var winH = document.documentElement.clientHeight;
oC.width = winW;
oC.height = winH;
var N = 5;
var LEN=50;//尾巴数量
var oldArr=[];
var aPoint = [];
for(var i = 0;i<N;i++){
aPoint[i] = {
x:rnd(0,winW),
y:rnd(0,winH),
iSpeedX:rnd(-10,10),// 下一个位置
iSpeedY:rnd(-10,10)
};
}
setInterval(function(){
//先清理画布
gd.clearRect(0,0,oC.width,oC.height);//
for(var i = 0;i<aPoint.length;i++){
//画图
aPoint[i].x+=aPoint[i].iSpeedX;
aPoint[i].y+=aPoint[i].iSpeedY;
//碰撞范围
if(aPoint[i].x<0){
aPoint[i].iSpeedX*=-1;
aPoint[i].x=0;
}
if(aPoint[i].x>oC.width){
aPoint[i].iSpeedX*=-1;
aPoint[i].x=oC.width;
}
if(aPoint[i].y<0){
aPoint[i].iSpeedY*=-1;
aPoint[i].y=0;
}
if(aPoint[i].y>oC.height){
aPoint[i].iSpeedY*=-1;
aPoint[i].y=oC.height;
}
//点
drawPoint(aPoint[i]);
}
//抬起画笔
gd.beginPath();
//连线
gd.strokeStyle='#fff';
gd.moveTo(aPoint[0].x,aPoint[0].y);
for(var i=1;i<aPoint.length;i++){
gd.lineTo(aPoint[i].x,aPoint.y);
}
gd.closePath(); //缝合
gd.stroke();
//画尾巴
var arr=[];
for(var i=0;i<aPoint.length;i++){
arr[i]={
x:aPoint[i].x,
y:aPoint[i].y
};
}
oldArr.push(arr);
if(oldArr.length>LEN){
oldArr.shift();
}
gd.beginPath();
gd.strokeStyle='#fff';
for(var i=0;i<oldArr.length;i++){
gd.moveTo(oldArr[i][0].x,oldArr[i][0].y);
for(var j=1;j<oldArr[i].length;j++){
gd.lineTo(oldArr[i][j].x,oldArr[i][j].y);
}
gd.closePath();
gd.stroke();
}
},16);
function drawPoint(p){
var pW = 1;
var pH = 1;
gd.fillStyle = '#fff';
gd.fillRect(p.x-pW/2,p.y-pH/2,pW,pH)
}
},false);
</script>
</head>
<body>
<canvas id="c1"></canvas>
</body>
</html>
canvas简单效果---屏保
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 标题很难引人入胜,先放个效果图好了 如果图片吸引不了你,那我觉得也就没啥看的了。 demo链接:https://w...