<html>
<head>
<title></title>
<meta charset="utf-8" />
<style type="text/css">
*
{
margin:0;
padding:0;
}
#myCanvas
{
background-color:cadetblue;
overflow:hidden;
}
</style>
</head>
<body>
<canvas id="myCanvas"></canvas>
<script type="text/javascript">
var canvasPage3 = document.getElementById("myCanvas");
canvasPage3.width = 1600;
canvasPage3.height = 770;
var ctx = canvasPage3.getContext("2d");
var zhongX = 800;
var zhongY = 385;
function randomNum(x,y)
{
return Math.floor(Math.random() * (y - x + 1) + x);
} function randomColor() {
return "rgb(" + randomNum(0, 255) + "," + randomNum(0, 255) + "," + randomNum(0, 255) + ")";
} function Ball() {
this.r = randomNum(0.1, 3);
this.color = "white"; this.x = randomNum(this.r, canvasPage3.width - this.r);
this.y = randomNum(this.r, canvasPage3.height - this.r); this.speedX = randomNum(1, 3) * (randomNum(0, 1) ? 1 : -1);
this.speedY = randomNum(1, 3) * (randomNum(0, 1) ? 1 : -1);
} Ball.prototype.move = function () {
this.x += this.speedX*0.2;
this.y += this.speedY*0.2; if(this.x<=this.r)
{
this.x = this.r;
this.speedX *= -1;
}
if(this.x>=canvasPage3.width -this.r)
{
this.x = canvasPage3.width - this.r
this.speedX *= -1;
}
//小球碰到上边界的处理 反弹
if (this.y <= this.r) {
this.y = this.r;
//反弹
this.speedY *= -1;
}
//小球碰到下边界的处理 反弹
if (this.y >= canvasPage3.height - this.r) {
this.y = canvasPage3.height - this.r;
//反弹
this.speedY *= -1;
}
} Ball.prototype.draw = function () {
ctx.beginPath();
ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false);
ctx.fillStyle = this.color;
ctx.fill();
} var balls = [];
var arr = [];
for (var i = 0; i < 0.0002 * canvasPage3.width * canvasPage3.height; i++) {
var ball = new Ball();
balls.push(ball);
} setInterval(function () {
arr = [];
ctx.clearRect(0, 0, canvasPage3.width, canvasPage3.height);
for (var i = 0; i < balls.length; i++) {
balls[i].move();
balls[i].draw();
if (ballAndMouse(balls[i]) < 130) {
ctx.lineWidth = (130 - ballAndMouse(balls[i])) * 1.5 / 130;
ctx.beginPath();
ctx.moveTo(balls[i].x, balls[i].y);
ctx.lineTo(zhongX, zhongY);
ctx.strokeStyle = balls[i].color;
ctx.stroke();
}
} for (var i = 0; i < balls.length; i++) {
for (var j = 0; j < balls.length; j++) {
if (ballAndBall(balls[i], balls[j]) < 80) {
ctx.lineWidth = (80 - ballAndBall(balls[i], balls[j])) * 0.6 / 80;
ctx.globalAlpha = (130 - ballAndBall(balls[i], balls[j])) * 1 / 80;
ctx.beginPath();
ctx.moveTo(balls[i].x, balls[i].y);
ctx.lineTo(balls[j].x, balls[j].y);
ctx.strokeStyle = balls[i].color;
ctx.stroke();
}
}
}
ctx.globalAlpha = 1.0; }, 30); canvasPage3.onmousemove = function (event) {
event = event || window.event;
zhongX = event.offsetX;
zhongY = event.offsetY;
} function ballAndMouse(obj) {
var disX = Math.abs(zhongX - obj.x);
var disY = Math.abs(zhongY - obj.y);
return Math.sqrt(disX * disX + disY * disY);
}
function ballAndBall(obj1, obj2) {
var disX = Math.abs(obj1.x - obj2.x);
var disY = Math.abs(obj1.y - obj2.y);
return Math.sqrt(disX * disX + disY * disY);
} </script>
</body>
</html>

html5粒子连线的更多相关文章

  1. 简直要逆天!超炫的 HTML5 粒子效果进度条

    我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢 ...

  2. 7款让人惊叹的HTML5粒子动画特效(转载)

    1.HTML5 Canvas粒子模拟效果 这是一款利用HTML5 Canvas模拟出来的30000个粒子动画,当你用鼠标在canvas画布上移动时,鼠标周围的一些粒子就会跟着你移动,并形成一定的图案, ...

  3. 7款让人惊叹的HTML5粒子动画特效

    HTML5的很大一个优势就是可以更加便捷高效地制作网页粒子动画特效,特别是Canvas特性,可以实现在网页上绘制任何图形和动画.本文要分享7款让人惊叹的HTML5粒子动画特效,这些粒子特效都提供源代码 ...

  4. 超炫的HTML5粒子效果进度条 VS 如何规范而优雅地code

    最近瞎逛的时候发现了一个超炫的粒子进度效果,有多炫呢?请擦亮眼镜!   // _this.ch){ _this.particles.splice(i, 1); } }; this.Particle.p ...

  5. 一步一步HTML5粒子编辑器

    写在前面 大家阅读此文之前,可以先看一篇MiloYip的文章:用JavaScript玩转游戏物理(一)运动学模拟与粒子系统,看完之后再看此文,更加容易理解. MiloYip使用的粒子是canvas中绘 ...

  6. HTML5画:线、圆、矩形、渐变

    示例一:矩形 <!DOCTYPE html><head> <meta charset=utf-8> <title>HTML5画线.圆.矩形</ti ...

  7. vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点, ...

  8. 精选9个值得学习的 HTML5 效果【附源码】

    这里精选了一组很酷的 HTML5 效果.HTML5 是现 Web 开发领域的热点, 拥有很多让人期待已久的新特性,特别是在移动端,Web 开发人员可以借助 HTML5 强大功能轻松制作各种交互性强.效 ...

  9. 让你心动的 HTML5 & CSS3 效果【附源码下载】

    这里集合的这组 HTML5 & CSS3 效果,有的是网站开发中常用的.实用的功能,有的是先进的 Web 技术的应用演示.不管哪一种,这些案例中的技术都值得我们去探究和学习. 超炫的 HTML ...

随机推荐

  1. zabbix监控Windows-server

    官网下载客户端 https://www.zabbix.com/download 2.创建自定义文件夹(路径任意),我创建的为C:\zabbix 3.将下载的文件存放至该目录,注意操作系统位数,去对应b ...

  2. Microsoft .NET Framework

    Microsoft .NET Framework是用于Windows的新托管代码编程模型.它将强大的功能与新技术结合起来,用于构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并且 ...

  3. Flash片头loading与MovieClipLoader

    //创建侦听器,侦听是否加载完成 var loader = new MovieClipLoader(); loader.onLoadComplete = function(obj) { if(obj ...

  4. 使用axios加入进度条

    思路:(安慰剂按钮)首先当触发按钮时,设置拦截器,启动进度条从0开始到100满(html进度条用数值value来控制,默认为0),设置进度条的配置函数然后在后端返回函数中启动停止精度条的函数,为了保持 ...

  5. word2vec参数理解

    之前写了对word2vec的一些简单理解,实践过程中需要对其参数有较深的了解: class gensim.models.word2vec.Word2Vec(sentences=None,size=10 ...

  6. C#-1-2-C#基础

    1-注释符 1).单行注释符:// 2).多行注释符:/**/ 3).文档注释符:// 2-常用快捷键 3-变量类型 4-转义字符 5-语句 1.将相应内容打印到控制台:Console.WriteLi ...

  7. bat实现获取文件每行内容,for循环中运行多条命令

    关键词:bat,bat获取文件内容 1.获取每行内容 @echo offfor /f "delims=" %%i in (config.txt) do (echo "%% ...

  8. CentOS安装Yarn只需两步就搞定

    Yarn 是一个依赖管理工具.它能够管理你的代码,并与全世界的开发者分享代码.Yarn 是高效.安全和可靠的,你完全可以安心使用.代码是通过包(有时也被称为组件). 在每一个包中会定义一个 packa ...

  9. 数据库——MongoDB增删改查

    MongoDB增删改查操作 本文包含对数据库.集合以及文档的基本增删改查操作 数据库操作 #1.增 use config #如果数据库不存在,则创建并切换到该数据库,存在则直接切换到指定数据库. #2 ...

  10. 显示日历的指令:cal

    1.显示日历的指令:cal (1)参数: (2)实例: