html5 微信转发集赞,HTML5 Canvas 献爱心/点赞动画

这篇博客介绍了使用JavaScript、Babel和CoffeeScript创建一个浪漫的爱心动画效果,通过window.onload事件监听,绘制在canvas上,包括爱心的显示、移动以及星光闪烁效果。用户可以通过鼠标点击或触摸屏幕触发动画变化。
摘要由CSDN通过智能技术生成

JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

window.onload = function() {

heart_it();

}

var c;

var $;

var w;

var h;

var luv = null;

var x = 0;

var y = 0;

var v = 0;

var t = -1;

var x_ = -1;

var y_ = -1;

var flag = false;

var cnt = 0;

var cnt2 = 0;

var _x = new Array();

var _y = new Array();

var spX = new Array();

var spY = new Array();

var s = new Array();

var t1 = 1;

var star = new Image();

star.src = "/uploads/160201/stars1.png";

for (i = 0; i < 200; i++) {

_x[i] = 300;

_y[i] = 445;

spX[i] = (Math.random() * 16) - 8;

spY[i] = (Math.random() * 16) - 8;

s[i] = Math.random() * (70 - 10) + 15;

}

function heart_it() {

c = document.getElementById('canv');

w = c.width = 640;

h = c.height = 960;

$ = c.getContext('2d');

x_ = c.offsetLeft;

y_ = c.offsetTop;

x = 160;

y = 232;

c.addEventListener("mousedown", msdn, false);

c.addEventListener("touchstart", msdn, false);

c.addEventListener("mouseup", msup, false);

c.addEventListener("touchend", msup, false);

fav();

}

function fav() {

draw();

window.requestAnimationFrame(fav, 60);

}

function draw() {

x += v;

$.clearRect(0, 0, 640, 960);

$.textAlign = "center";

$.textBaseline = "middle";

if (cnt == 0) {

$.font = "100px Poiret One";

$.fillStyle = "hsla(255,255%,255%,1)";

$.fillText("❤", 320, 465);

} else if (cnt == 1) {

$.font = "150px Poiret One";

$.fillStyle = "hsla(0, 95%, 45%, 1)";

$.fillText("❤", 320, 465);

} else if (cnt == 2) {

for (i = 0; i < 200; i++) {

_x[i] = _x[i] - spX[i];

_y[i] = _y[i] - spY[i];

if (t1 > (Math.random() * 17)) {

_y[i] = -1000

}

$.drawImage(star, _x[i], _y[i], s[i], s[i]);

}

t1 = t1 + 0.03;

$.font = "100px Poiret One";

$.fillStyle = "hsla(0, 95%, 45%, 1)";

$.fillText("❤", 320, 465);

} else {

$.font = "120px Poiret One";

$.fillStyle = "hsla(0, 95%, 45%, 1)";

$.fillText("❤", 320, 465);

}

}

function msdn(e) {

var currX = e.clientX - x_;

var currY = e.clientY - y_;

var x1 = x - currX;

var y1 = y - currY;

var r = Math.sqrt(x1 * x1 + y1 * y1);

if (r < 60) {

cnt = cnt + 1;

flag = true;

}

}

function msup(e) {

if (flag) {

cnt = cnt + 1;

}

}

document.ontouchmove = function(e) {

e.preventDefault();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值