随鼠标动的炫彩小球

<!DOCTYPE html><html>   <head>      <meta charset="UTF-8">      <title></title>   </head>   <style type="text/css">      *{         margin: 0;         padding: 0;      }      canvas{         display: block;         background: pink;      }   </style>   <body>      <canvas id="view" ></canvas>   </body>   <script type="text/javascript">

//0.获取元素

var view = document.getElementById(‘view‘);

var ps = view.getContext(‘2d‘);

var width = document.documentElement.clientWidth;

var height = document.documentElement.clientHeight;

view.width = width;

view.height = height;

//1.定义一个类(构造函数)

function ball(x,y){

//初始半径          this.r = 20;

//初始速度

this.speedX = this.random(8);

this.speedY = this.random(8);

this.speedR = Math.abs(this.random(2));

//初始化颜色及透明度

this.red = Math.abs(this.random(256));

this.green = Math.abs(this.random(256));

this.blue = Math.abs(this.random(256));

this.opacity = 1;

//初始化透明度速度

this.opacitySpeed = Math.random()*0.5/2;

//初始化xy值

this.x = x === undefined ?  width/2 : x;

this.y = y ===undefined ? height/2 : y;

}

//2.添加原型方法

ball.prototype = {

random:function(num){            //获取随机正数            num =  parseInt(Math.random()*num)+1

//随机获取是否使用负数

return parseInt(Math.random()*2) ? num : -num

},

render:function(){

//开启路径

ps.beginPath();

ps.fillStyle = ‘rgba(‘+this.red+‘,‘+this.green+‘,‘+this.blue+‘,‘+this.opacity+‘)‘;

ps.arc(this.x,this.y,this.r,0,2*Math.PI);

ps.fill();

},

update:function(){

//如果半径 小于等于0  终止

if(this.r<=0) return;

this.x += this.speedX;

this.y += this.speedY;

this.r -= this.speedR;

this.opacity -= this.opacitySpeed;

this.render();

}

}

//3.声明一个舞台对象  保存演员及安排演出

var stage = {

speed:40,

sid:0,//保存定时器ID

//存球(演员)         children:[],

//添加演员方法(统一 使用该方法添加演员)  

addChild:function(child){

// 记录一下你刚才添加了谁

this.children.push(child);

return this

},

//初始化添加方法   决定生成的数量  及XY坐标

init:function(num,x,y){

//循环生成

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

//向子元素添加球

this.addChild( new ball(x,y) )

}

return this

},

play:function(){

// 如果sid为真直接return

if(this.sid) return this

var children = this.children;

this.sid = setInterval(function(){

//清场

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

// 每个演员表演

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

//更新

children[i].update();

//判断当前元素半径是否小于等于0 如果是删除这个子元素

if(children[i].r<=0){

//删除当前元素

children.splice(i,1);

}

}

},this.speed)

}

}

//4.添加鼠标移动事件

view.onmousemove = function(e){

//兼容获取event

e = e || window.event;

var x = e.clientX - view.offsetLeft;

var y= e.clientY - view.offsetTop;

// 添加演员

stage.init(4,x,y).play();

console.log(stage.children.length)

}

</script></html>
时间: 2024-10-12 07:16:30

随鼠标动的炫彩小球的相关文章

超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等

超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 <canvas> 元素. 贴士:全部例子都分享在我的 GayHub - https://github.com/bxm0927/canvas-special 尤雨溪个人主页炫彩三角纽带效果,点击还可变换 GitHub源码 . Demo演示 知乎登录注册页动态离子背景效果 GitHub源码 . Demo演

利用51单片机做出一些炫彩效果

今天我们来讨论一下我们如何利用单片机做出一些炫彩的效果,而昨天好像是七夕节,很多人都把它当做了情人节,那么我们来做一个浪漫的"I  Love u":今天我就把代码写出来,而不再是截图挂出来.效果图我也就拍出来了,你们如果有单片机可以自己复制代码下来看一些效果.(其实这一次的代码有一点跨度大了,毕竟前面我并没有说的很深入,现在一下子又变得看不懂了,不过慢慢来,我会在以后的博客中把后边的讨论写详细一点)代码如下,注释我来写了一部分,但是不全,我会慢慢把它补齐. 效果大致如我以下描述:首先,

炫彩logo粒子效果

h2{font-size:1.5em}p{text-indent:2em;}前端开发whqet,csdn,王海庆,whqet,前端开发专家 昨天我们学习了利用requestAnimationFrame优化动画控制,然后就忍不住冲动,在fork别人codepen的基础上,实现了这个炫彩logo粒子效果,效果预览如下. -------------------------------------------------------------------------------------------

@description iPhoneX炫彩渐变背景实现

/** * @author zhangxinxu(.com) * @description iPhoneX炫彩渐变背景实现 * @link http://www.zhangxinxu.com/wordpress/?p=6614 * @license MIT 保留版权声明 */ var colorfulBackground=function(t){var A={container:document.body,size:[512,512],grid:[2,3],backgroundColor:"#E

[Micropython]发光二极管制作炫彩跑马灯

先甩锅 做完后才发现最后一个灯坏了,就坏了一个灯也不好意思去找淘宝店家,大家视频凑合着看把.不过并不影响实验效果.因为这个发光二极管白天不是很明显 晚上炫彩效果就能出来了.本次实验用的是8个灯珠,大家可以尝试更多用更多灯珠的,或者买灯带,那样呈现的效果会更酷.更炫!视频文章最后面. 实验器材(来自某宝,可惜没有实体店不然省很多麻烦) TPYBoard v102 1块 ws2812b RGB-Ring-8 1个 micro USB数据线 1条 杜邦线 若干 WS2812B是一个集控制电路与发光电路

iPhoneX炫彩壁纸背景demo(含动效)

网页链接 原文链接:http://www.zhangxinxu.com/wordpress/2017/12/canvas-pixi-js-iphonex-colorful-wallpaper-background/ 原文地址:https://www.cnblogs.com/paul-du/p/8116996.html

炫彩字and鼠标爱心

<!DOCTYPE html> <style type="text/css"> body{ background-color: black; } #zx { font-weight: 600; font-size: 28px; font-family: "黑体"; color: #8c888b; background: -webkit-linear-gradient(45deg, #70f7fe, #fbd7c6, #fdefac, #bfb

js炫酷小球沿着直线跑动导航条特效源码分享

在线预览特效地址: http://www.zuidaima.com/html/2251669926857728/index.html 最近一直在做企业的网站,今天分享一个前端的demo主要想分享的就是js. 主要的效果,先上图吧.如下: 哈~ 盗了一下最代码的logo,大牛不要怪罪我啊. 这里因为没有部署到网上,我就描述一下主要的动画效果吧! 第一个效果:里面有个小球的 会沿着红色的线条跑,遇到圆就会绕一圈然后接着跑直线,遇到圆又绕着圆跑,直到把直线都跑完为止,然后重新开始跑,这是第一个动画效果

jQuery超链接提示,提示跟随鼠标动

功能:实现鼠标移动到一个超链接时,鼠标右下角产生一个提示,并跟谁鼠标移动,知道鼠标离开超链接. 效果: 源码: 1 <!--本案例是鼠标放在超链接上时,鼠标旁边有提示这是个超练级,以及放在图片上时图片效果放大预览--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>文字超链接提示和图