JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

var c = document.getElementById("c");

var ctx = c.getContext("2d");

var cw = c.width = 400,

cx = cw / 2;

var ch = c.height = 400,

cy = ch / 2;

var frames = 0;

var R = 100; // for the heart path

var howMany = 300; // how many particles

var p = []; // particles array

var D = 25;

/*var colors = [170, 180, 190, 200, 210];*/

var colors = [340, 350, 360, 0, 10, 20];

ctx.fillStyle = "rgba(0,0,0,.05)";

var cx = [cw / 2, cw / 2 + R, cw / 2 - R];

var cy = [ch / 2, R, R];

function Particle() {

var a = (Math.random() * 2 * Math.PI);

var r = ~~(Math.random() * R);

var index = Math.floor(Math.random() * 3)

this.x = cx[index] + r * Math.cos(a);

this.y = cy[index] + r * Math.sin(a);

this.ix = (Math.random()) * (Math.random() < 0.5 ? -1 : 1); //positive or negative

this.iy = (Math.random()) * (Math.random() < 0.5 ? -1 : 1); //positive or negative

this.hue = colors[Math.round(Math.random() * colors.length) + 1]

}

function createParticle() {

var particle = new Particle();

p.push(particle);

}

for (var i = 0; i < howMany / 2; i++) {

createParticle();

}

function Draw() {

frames++

if (frames % 2 == 0 && p.length < howMany) {

createParticle();

}

ctx.fillRect(0, 0, cw, ch);

thePath(R, 1); // the current path for isPointInPath

ctx.strokeStyle = "hsla(0,50%,20%,.3)";

ctx.stroke();

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

ctx.fillStyle = p[i].c;

if (ctx.isPointInPath(p[i].x, p[i].y)) {

p[i].x += p[i].ix;

p[i].y += p[i].iy;

} else {

p[i].ix = -1 * p[i].ix;

p[i].iy = -1 * p[i].iy;

p[i].x += p[i].ix;

p[i].y += p[i].iy;

}

}

compare();

window.requestAnimationFrame(Draw);

}

window.requestAnimationFrame(Draw);

function compare() {

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

var a = p[i];

for (var j = i + 1; j < p.length; j++) {

var b = p[j];

var dist = distance(a, b);

if (dist < D) {

var c = {};

var alp = (D - dist) / D;

var hue = a.hue;

ctx.strokeStyle = "hsla(" + hue + ",87%, 44%," + alp + ")";

ctx.beginPath();

ctx.moveTo(a.x, a.y);

ctx.lineTo(b.x, b.y);

ctx.stroke();

}

}

}

}

function distance(a, b) {

var ac = b.y - a.y;

var bc = b.x - a.x;

var ab = Math.sqrt(ac * ac + bc * bc);

return ab;

}

function thePath(R, r) { //draw a heart

ctx.beginPath();

ctx.moveTo(200, R);

ctx.arc(300, R, R - r, Math.PI, Math.PI * 0.23);

ctx.lineTo(200, 350);

ctx.arc(100, R, R - r, Math.PI * 0.77, 0); // NO stroke!!!

}

function randomIntFromInterval(mn, mx) {

return ~~(Math.random() * (mx - mn + 1) + mn);

}

android 画布心形,用CANVAS实现的心形动画效果相关推荐

  1. Android中的popupwindow从底部进入和退出的动画效果

    今天,简单讲讲android使用popupwindow时设置popupwindow进入和退出的动画效果. 其实这个很简单,之前设置popupwindow从底部进入和退出的效果时,当时记不清了,所以在网 ...

  2. android动画效果 translate,Android利用translate、scale、alpha、rotate实现动画效果

    Android利用translate.scale.alpha.rotate实现动画效果 在Android中可以用animation实现动画效果,Android中的animation由四种类型组成: a ...

  3. php3D动画,html5的canvas实现几何模型3D运动动画效果

    html5的canvas实现几何模型3D运动动画效果 JS片段: var {atan2,sqrt,sin,cos,PI,acos} = Math; function project3D(x,y,z,v ...

  4. Android画布和图形绘制---Canvas and Drawables(一)

    注:本文译自:http://developer.android.com/guide/topics/graphics/2d-graphics.html Android框架API提供了一组2D描画API, ...

  5. 怎样用html制作动态心,HTML5使用Canvas动态绘制心型线和玫瑰线的教程

    1html5的canvas元素提供了丰富的绘图功能,能够使我们制作出许多精美的动画.本次将运用canvas绘制心型线和玫瑰线. 1.心型线和玫瑰线 绘制这两种曲线,首先我们分别选用两个参数方程(心型线 ...

  6. Android 中通过Canvas 与线程结合实现动画效果

    前段时间在公司做了一个模块,不使用第三方动画效果类,直接通过Canvas 进行图像的绘制,并通过Thread实现动画的效果 该模块主要是实现车辆运行时候的道路运行效果,在进行实施前做了一个相关的Dem ...

  7. 7 款基于 HTML5 Canvas 的超炫 3D 动画效果

    在以前,想要在浏览器中实现3D动画效果是非常困难的,但是自从HTML5诞生之后,这就变得十分简单了.遗憾的是,目前的浏览器对3D渲染效果还不是非常理想,尤其是渲染速度,可能用chrome和safari ...

  8. 【Canvas】js用canvas绘制一个钟表时钟动画效果

    学习JavaScript的看过来,有没有兴趣用Canvas画图呢,可以画很多有趣的事物,自由发挥想象,收获多多哦,旋转角度绘图这个重点掌握到了吗,这里有一个例子,如何用canvas画钟表时钟动图效果, ...

  9. html动画变圆,HTML5 canvas制作圆形的万花筒动画效果

    Canvas圆形万花筒动画效果 window.οnlοad=function(){ var canvas = document.getElementById("canvas"); ...

  10. Android 实现录音和监听声音大小实现话筒动画效果

    公司项目做的差不多了,,闲下来了,,就写一篇关于android利用MediaRecorder实现录音的文章吧,并且录音的时候声音的大小可以控制话筒实现动画效果, 效果如图所示: 录音的文件最后保存在S ...

最新文章

  1. RDKit | 基于最大公共子结构(MCS)的分子比对
  2. 【RocketMQ工作原理】消息的清理
  3. 调用script方法_自己撸一个代码生成器输入参数和方法
  4. VS2015 MFC属性页孙鑫笔记
  5. hdu oj1094题解
  6. 从零开始小说 html,从零开始的HTML生活
  7. waitpid最后以一个参数设为0_西门子MM440变频器参数设置
  8. FileWriter写入和Scanner录入的简单操作
  9. python 工程生成requirements
  10. java : JSR107缓存规范
  11. webstorm与Idea禁用自动保存
  12. linux整行剪切_云计算人员如何提高效率 要掌握哪些Linux命令
  13. 基于jenkins的自动化部署实现
  14. C#中的多线程 - 多线程的使用 z
  15. Python入门之经典函数实例
  16. 基于bootstrap 的AceAdmin 1.4版本(iframe修改)
  17. js解决m3u8视频无法播放问题
  18. gmail更改个人信息_如何在不创建新电子邮件地址的情况下更改Gmail名称
  19. python代码错误有哪些_Python常见十六个错误集合,你知道那些?
  20. [知识普及]世界知名洋酒

热门文章

  1. 关于一阶线性电路的零输入响应
  2. java和大数据开发该选择哪个好就业?
  3. linux怎么看系统内存多大内存频率,Linux 查看 CPU 型号及内存频率及其它信息的命令...
  4. java 主机字节序_java字节序、主机字节序和网络字节序扫盲贴
  5. ug电子产品计算机建模,UG10网格曲面咖啡壶
  6. 【android】Android Studio创建模拟手机虚拟机
  7. CSS实现最简洁的加载动画
  8. UE4 后期材质节点学习
  9. php批量上传代码,文件批量上传_php文件上传代码(支持文件批量上传)
  10. c语言游戏经典案例,C语言_编游戏案例精编.doc