html5同心圆代码,HTML5/Canvas 鼠标跟随的同心圆

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

(function() {

this.Easing = (function() {

function Easing() {}

Easing.easeOutCubic = function(t) {

return 4 * t * t * t;

};

Easing.easeInOutCubic = function(t) {

if (t < .5) {

return 4 * t * t * t;

} else {

return (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;

}

};

return Easing;

})();

this.Point = (function() {

function Point(x1, y1) {

this.x = x1;

this.y = y1;

}

return Point;

})();

this.Circle = (function() {

function Circle(c1, r, color1, duration) {

this.c = c1;

this.r = r;

this.color = color1;

this.duration = duration;

this.offset = new Point(3, 3);

}

Circle.prototype.updateShadowOffset = function(lightPoint, maxD) {

return this.offset = new Point((this.c.x - lightPoint.x) / maxD * 200 + 3, (this.c.y - lightPoint.y) / maxD * 200 + 3);

};

Circle.prototype.movecenter = function(p1, p2, startTime, maxD) {

var t;

t = new Date().getTime() - startTime;

if (t >= this.duration) {

return;

}

t /= this.duration;

t = Easing.easeInOutCubic(t);

this.c.x = p1.x + t * (p2.x - p1.x);

this.c.y = p1.y + t * (p2.y - p1.y);

this.updateShadowOffset(p2, maxD);

return requestAnimationFrame((function(_this) {

return function() {

return _this.movecenter(p1, p2, startTime, maxD);

};

})(this));

};

return Circle;

})();

this.Hypnotic = (function() {

function Hypnotic(id, numCircles) {

var color, diagonal, i, j, ref, self, step, timeStep;

this.numCircles = numCircles;

this.canvas = document.getElementById(id);

this.canvas.width = this.canvas.clientWidth;

this.canvas.height = this.canvas.clientHeight;

this.ctx = this.canvas.getContext('2d');

diagonal = Math.sqrt(this.canvas.width * this.canvas.width + this.canvas.height * this.canvas.height);

step = diagonal / this.numCircles;

timeStep = 5000 / this.numCircles;

this.circles = [];

for (i = j = 1, ref = this.numCircles; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {

color = i % 2 === 0 ? '#FFFFFF' : '#4BB5C1';

this.circles.push(new Circle(new Point(0, this.canvas.height / 2), step * i, color, timeStep * i));

}

this.circles.reverse();

self = this;

$('#' + id).mousemove(function(e) {

var c, k, len, now, offset, ref1, results, x, y;

offset = $(this).offset();

x = e.pageX - offset.left;

y = e.pageY - offset.top;

now = new Date().getTime();

ref1 = self.circles;

results = [];

for (k = 0, len = ref1.length; k < len; k++) {

c = ref1[k];

results.push(c.movecenter(c.c, new Point(x, y), new Date().getTime(), Math.max(self.canvas.width, self.canvas.height)));

}

return results;

});

$('#' + id).on('touchmove', function(e) {

var c, k, len, ref1, results, touch;

touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];

ref1 = self.circles;

results = [];

for (k = 0, len = ref1.length; k < len; k++) {

c = ref1[k];

results.push(c.movecenter(c.c, new Point(touch.pageX, touch.pageY), new Date().getTime(), Math.max(self.canvas.width, self.canvas.height)));

}

return results;

});

$('#' + id).mouseleave(function(e) {

return self.recenter();

});

}

Hypnotic.prototype.recenter = function() {

var c, j, len, ref, results;

ref = this.circles;

results = [];

for (j = 0, len = ref.length; j < len; j++) {

c = ref[j];

results.push(c.movecenter(c.c, new Point(this.canvas.width / 2, this.canvas.height / 2), new Date().getTime(), Math.max(this.canvas.width, this.canvas.height)));

}

return results;

};

Hypnotic.prototype.run = function() {

this.draw();

return this.recenter();

};

Hypnotic.prototype.draw = function() {

var c, j, len, ref;

this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);

ref = this.circles;

for (j = 0, len = ref.length; j < len; j++) {

c = ref[j];

this.ctx.moveTo(c.c.x, c.c.y);

this.ctx.fillStyle = c.color;

this.ctx.shadowColor = 'rgba(0,0,0,0.2)';

this.ctx.shadowOffsetX = c.offset.x;

this.ctx.shadowOffsetY = c.offset.y;

this.ctx.beginPath();

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

this.ctx.fill();

}

return requestAnimationFrame(((function(_this) {

return function() {

return _this.draw();

};

})(this)));

};

return Hypnotic;

})();

$(function() {

var anim;

anim = new Hypnotic('fg', 20);

return anim.run();

});

}).call(this);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mips汇编计算开方_读美国伊利诺伊理工大学计算机科学硕士能学到什么?

最近有很多计算机专业的大学生和程序员、工程师等在职人士&#xff0c;向彼岸教育咨询美国伊利诺伊理工大学的计算机硕士项目&#xff0c;想更多地了解课程和教学内容。彼岸教育从伊利诺伊理工大学计算机科学系要来了一份近期学校的安排的部分课程大纲&#xff0c;包括教师背景…

mac os x10.9.2 查看进程对应端口

以前在Ubuntu上&#xff0c;直接sudo netstat -nap 但是在mac 上这个命令还跑不通&#xff0c;sudo netstat -nap tcp 才行&#xff0c;结果还没有进程号。用lsof -Pn 解决了转载于:https://www.cnblogs.com/xiaoleiel/p/8295333.html

html iframe php,html iframe使用的实战总结分享

说在前面的话&#xff0c;iframe是可以做很多事情的。例如&#xff1a;a>通过iframe实现跨域;b>使用iframe解决IE6下select遮挡不住的问题c>通过iframe解决Ajax的前进后退问题d>通过iframe实现异步上传。(Easyui中form组件就是用的iframe&#xff0c;实现表单提交时…

环形队列出队的元素怎么输出出来_队列的知识讲解与基本实现(数据结构)

引言中午在食堂打饭&#xff0c;真是一个令人头疼的事情&#xff0c;去食堂的路上也总是步伐匆匆&#xff0c;为什么啊&#xff0c;这还用说&#xff0c;迟一点去&#xff0c;你就会知道什么叫做人山人海了&#xff0c;在食堂排队的时候&#xff0c;相比较学生来说&#xff0c;…

$compile 手动编译

angularjs里比较重要但又很少手动调用的要属$compile服务了&#xff0c;通常在写组件或指令时&#xff0c;都是angularjs自动编译完成的&#xff0c;但有时我们可能需要手动编译&#xff0c;比如封装一个table组件&#xff0c;根据参数实现自定义渲染&#xff0c;增加一列复选框…

计算机excel知识点一级,2012年计算机一级考试高分必看知识点:EXCEL

EXCEL1、 插入新工作表&#xff0c;更改工作表名单击“插入/工作表”,即可插入新工作表&#xff0c;工作表名为sheet编号指向某张工作表处&#xff0c;双击鼠标左键&#xff0c;输入新工作表名即可修改工作表名2、 设置某列数据保留小数位数为2位选择该列所有有效数据后&#x…

c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序

关注我们获取更多计算机考研信息对链表进行插入&#xff0c;插入排序算法&#xff1a;插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c;插入排序只从输入数据中移除一个待排序的元素&#xff0c;找…

HA架构

HA架构是个什么东西&#xff1f; 阅读文章&#xff1a;浅谈web应用的负载均衡、集群、高可用(HA)解决方案转载于:https://www.cnblogs.com/Tpf386/p/8297744.html

怎么检查计算机网络是连接,怎么检测网络打印机是否与电脑连接成功【检测方法】...

想必不少宝宝和以前的小编一样&#xff0c;在用网络打印机的时候&#xff0c;有时候能打印&#xff0c;有时候却打印不了。那么如何 检测网络打印机是否与电脑连接成功?跟随小编往下看。系统反反复复告知“无法打印”&#xff0c;让工作本已繁忙的小修近乎奔溃! 那么&#xff…

python画菱形的代码_python绘制菱形

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01;首先&#xff0c;将数据读入到python中&#xff0c;并绘制出生率和死亡率数据的散点图&#xff0c;代码如下&…

正则表达式小应用之对xml格式字符串每个字段加双引号

通过Python对接口进行自动化后需要把xml格式的报文放到LoadRunner上进行压力测试&#xff0c;在pyCharm控制台打印出报文后&#xff0c;把报文放到LoadRunner中做了格式调整后&#xff0c;每个字段需要添加双引号。手动给每一行的字段添加双引号太费时费力&#xff0c;利用UE也…

python爬虫数据可视化_python 爬虫与数据可视化--python基础知识

摘要&#xff1a;偶然机会接触到python语音&#xff0c;感觉语法简单、功能强大&#xff0c;刚好朋友分享了一个网课《python 爬虫与数据可视化》&#xff0c;于是在工作与闲暇时间学习起来&#xff0c;并做如下课程笔记整理&#xff0c;整体大概分为4个部分&#xff08;1.pyth…

计算机实物知识需求市场调研,能力本位计算机维护论文

能力本位计算机维护论文1课程教学现状对于计算机专业学生来说&#xff0c;学会组装计算机系统&#xff0c;分析和解决计算机常见故障是计算机专业学生必须掌握的一项技能&#xff0c;学好本课程对将来就业有很大的帮助。然而&#xff0c;随着计算机技术的快速发展&#xff0c;本…

重写、重构、重载区别

目的 最近的经历&#xff0c;被问到重构、重写、重载&#xff0c;今天在网上查资料学习。总结如下&#xff0c;希望对你有帮助。 重构、重写、重载 重构&#xff1a;通过调整程序代码改善软件的质量、性能&#xff0c;使其程序的设计模式和架构更趋合理。提高软件的扩展性和维护…

python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成

如果你懒得看下边的文字&#xff0c;我录了一个完整的教学视频在b站上。 我的B站教学&#xff1a;https://www.bilibili.com/video/av75377135?p2 工作原理 b站是提供弹幕接口的&#xff0c;所以我们的整体操作进行如下&#xff1a; 1.到B站获取cid2.将cid与网站固定格式进行链…

c json输出html标签,Json编码HTML字符串

我目前正在从PowerShell脚本生成JSON文件&#xff0c;但它正在输出Unicode而不是特殊字符&#xff0c;如这是我得到的输出&#xff1a;[{"Id": "187303","LinkText": "\u003cb style color:#d11717;\u0027\u003eAnnual General Meeting (ME…

access vba 常量数组赋值_聊聊 VBA 数组的那些坑

为什么使用数组&#xff1f;1. 缩减工作薄文件大小&#xff0c;提高运行效率一般而言只是使用 Excel 的内置工作表函数&#xff0c;在运算方面还是很高效的&#xff0c;但有时因为一个单元格牵扯的计算太多&#xff0c;比如调用多单元格数据&#xff0c;对结果文本进行部分替换…

extern、static

1. 基本解释&#xff1a;extern可以置于变量或者函数前&#xff0c;以标示变量或者函数的定义在别的文件中&#xff0c;提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用&#xff0c;第一个,当它与"C&quo…

python如何处理数据_python数据处理之如何选取csv文件中某几行的数据

前言 有些人看到这个问题觉得不是问题&#xff0c;是嘛&#xff0c;不就是df.col[]函数嘛&#xff0c;其实忽略了一个重点&#xff0c;那就是我们要省去把csv文件全部读取这个过程&#xff0c;因为如果在面临亿万级别的大规模数据&#xff0c;得到的结果就是boom&#xff0c;bo…

HTML文件可通过www进行传输,使用 zssh 进行 Zmodem 文件传输

Zmodem 最早是设计用来在串行连接(uart、rs232、rs485)上进行数据传输的&#xff0c;比如&#xff0c;在 minicom 下&#xff0c;我们就可以方便的用 Zmodem (说 sz 、rz 可能大家更熟悉)传输文件。只不过串口本身传输速度不快&#xff0c;文件大的话会让人有点崩溃。没有彻底把…