html5小圆点,HTML5的Canvas实现小圆点在屏幕内跑动

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

0818b9ca8b590ca3270a3433284dd417.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,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, 0, Math.PI * 2, true);

$.closePath();

$.fill();

}

}

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

function updateCanvas() {

requestAnimationFrame(updateCanvas),

drawCircle();

}

window.addEventListener('mousedown',createCircle);

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

createCircle();

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

updateCanvas();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值