三角运动 html,js实现三角形粒子运动

本文实例为大家分享了js实现三角形粒子运动的具体代码,供大家参考,具体内容如下

效果(这里只是截了一个静态图,实际上里面的粒子是运动状态的):

0439496c4300a3ed2bf59c6b0f953bf3.png

粒子

* {

margin: 0;

padding: 0;

}

body {

overflow: hidden;

}

//随机数获取 3 10 *7+3

function random(min, max) {

return Math.random() * (max - min) + min;

}

//亮色系

// colors = ['#7cb5ec', '#434348', '#90ed7d', '#f7a35c', '#8085e9', '#f15c80', '#e4d354', '#8085e8', '#8d4653', '#91e8e1'];

//暗色系

colors = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3']

//获取窗口宽高

var width = window.innerWidth;

var height = window.innerHeight;

function Bubble() {

this.r = random(5, 100);

this.x1 = random(this.r, this.r * 2);

this.y1 = random(this.r, this.r * 2);

this.x2 = random(this.r, this.r * 2);

this.y2 = random(this.r, this.r * 2);

this.x3 = random(this.r, this.r * 2);

this.y3 = random(this.r, this.r * 2);

//随机获取colors数组里的颜色

this.color = colors[Math.floor(random(0, colors.length))];

//偏移步长

this.xr = random(-5, 5);

this.yr = random(-5, 5);

}

Bubble.prototype = {

//绘制

draw: function (context) {

//开始路径

context.beginPath();

context.moveTo(this.x1, this.y1);

context.lineTo(this.x2, this.y2);

context.lineTo(this.x3, this.y3);

context.lineTo(this.x1, this.y1);

context.fillStyle = this.color;

context.fill();

},

//移动

move: function (context) {

this.x1 += this.xr;

this.y1 += this.yr;

this.x2 += this.xr;

this.y2 += this.yr;

this.x3 += this.xr;

this.y3 += this.yr;

//边缘检测

(this.x1 > width || this.x1 < 0) ? this.xr = -this.xr : null;

(this.y1 > height || this.y1 < 0) ? this.yr = -this.yr : null;

(this.x2 > width || this.x2 < 0) ? this.xr = -this.xr : null;

(this.y2 > height || this.y2 < 0) ? this.yr = -this.yr : null;

(this.x3 > width || this.x3 < 0) ? this.xr = -this.xr : null;

(this.y3 > height || this.y3 < 0) ? this.yr = -this.yr : null;

this.draw(context);

}

}

window.onload = function () {

//获取画布dom

var canvas = document.querySelector('canvas');

//设置canvas的宽高

canvas.width = width;

canvas.height = height;

//获取画布上下文对象

var context = canvas.getContext('2d');

//数组存储bubble

var arr = [];

//生成粒子

var total = 100;

//生成例子

for (var i = 0; i < total; i++) {

var bubble = new Bubble();

bubble.draw(context);

arr.push(bubble);

}

var id = setInterval(function () {

//清除

context.clearRect(0, 0, width, height);

//开始移动

for (var i = 0; i < arr.length; i++) {

arr[i].move(context);

}

}, 1000 / 60)

//点击次数

var count = 0;

canvas.onclick = function () {

if (count++ % 2 == 0) {

//停止

clearInterval(id);

} else {

//运行

id = setInterval(function () {

//清除

context.clearRect(0, 0, width, height);

//开始移动

for (var i = 0; i < arr.length; i++) {

arr[i].move(context);

}

}, 1000 / 60)

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-09-20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值