呼吸小圆点html,HTML5的Canvas实现小圆点在屏幕内跑动

点击屏幕可以增加小圆点个数,效果如图:

f7a739b1566099e5df1d0ee5116ece5e.png

完整代码如下,复制到HTML文件,打开即可运行。

Hover

/*@import url(http://fonts.googleapis.com/css?family=Righteous);*/

body {

width: 100%;

margin: 0;

overflow: hidden;

cursor: move;

background: black;

height: 100%;

}

window.requestAnimFrame = (function() {

return window.requestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame ||

window.oRequestAnimationFrame ||

window.msRequestAnimationFrame ||

function(callback) {

window.setTimeout(callback,1000 / 60);

};

}) ();

c = document.getElementById('canvas'),$ = c.getContext('2d');

//设定画布的宽高

var w = c.width = window.innerWidth;

var h = c.height = window.innerHeight;

//喷射点坐标

sx = w / 2;

sy = h / 2;

//放置圆点对象的数组

var circles = [];

//鼠标的位置

var mouse = {

x: 0,y: 0

};

//初始速度

var vel = 10;

//创建新的圆点并加入数组

function createCircle() {

circles.push({

x: sx,y: sy,v: {

x: vel * Math.random(),y: vel * Math.random()

}

});

}

//清除画布内容

function clear() {

$.fillStyle = 'black';

$.fillRect(0,w,h);

}

//画圆点

function drawCircle() {

clear();

for (var i in circles) {

if (circles[i].x < 5 || w - circles[i].x < 5) {

circles[i].v.x *= -1;

circles[i].v.y -= 1;

}

if (circles[i].y < 5 || h - circles[i].y < 5) {

circles[i].v.y *= -1;

circles[i].v.x -= 1;

}

circles[i].x += circles[i].v.x;

circles[i].y += circles[i].v.y;

$.fillStyle = 'red';

$.beginPath();

$.arc(circles[i].x,circles[i].y,20,Math.PI * 2,true);

$.closePath();

$.fill();

}

}

//设置动画的回调函数,使动画持续播放

function updateCanvas() {

requestAnimationFrame(updateCanvas),drawCircle();

}

window.addEventListener('mousedown',createCircle);

//页面载入后自行产生一个圆点

createCircle();

//触发循环回调,动画即可持续进行

updateCanvas();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值