js实现直播点击飘心效果


Posted in Javascript onAugust 19, 2020

本文实例为大家分享了js实现直播点击飘心效果的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>直播点击飘心效果</title>
 <style type="text/css">
html, body {
 height: 100%;
 position: relative;
 width: 100%;
}
canvas {
 display: block;
 position: absolute;
 bottom: 100px;
 right: -24px;
 z-index: 20;
 cursor: pointer;
 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.journal-reward {
 position: absolute;
 bottom: 70px;
 right: 20px;
 height: 60px;
 width: 60px;
 display: block;
 z-index: 21;
 cursor: pointer;
}
 
</style>
</head>
<body>
 <img src="img/reward.png" class="journal-reward" /> 
<script src="jquery.min.js"></script> 
<script src="flutter-hearts-zmt.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

flutter-hearts-zmt.js

! function(t, e) {
 "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.BubbleHearts = e()
}(this, function() {
 "use strict";
 
 function t(t, n, r) {
 var i = e.uniformDiscrete(89, 91) / 100,
 o = 1 - i,
 u = (e.uniformDiscrete(45, 60) + e.uniformDiscrete(45, 60)) / 100,
 a = function(t) {
 return t > i ? Math.max(((1 - t) / o).toFixed(2), .1) * u : u
 },
 c = e.uniformDiscrete(-30, 30),
 f = function(t) {
 return c
 },
 h = 10,
 s = n.width / 2 + e.uniformDiscrete(-h, h),
 d = (n.width - Math.sqrt(Math.pow(t.width, 2) + Math.pow(t.height, 2))) / 2 - h,
 l = e.uniformDiscrete(.8 * d, d) * (e.uniformDiscrete(0, 1) ? 1 : -1),
 m = e.uniformDiscrete(250, 400),
 w = function(t) {
 return t > i ? s : s + l * Math.sin(m * (i - t) * Math.PI / 180)
 },
 v = function(e) {
 return t.height / 2 + (n.height - t.height / 2) * e
 },
 p = e.uniformDiscrete(14, 18) / 100,
 g = function(t) {
 return t > p ? 1 : 1 - ((p - t) / p).toFixed(2)
 };
 return function(e) {
 if(!(e >= 0)) return !0;
 r.save();
 var n = a(e),
 i = f(e),
 o = w(e),
 u = v(e);
 r.translate(o, u), r.scale(n, n), r.rotate(i * Math.PI / 180), r.globalAlpha = g(e), r.drawImage(t, -t.width / 2, -t.height / 2, t.width, t.height), r.restore()
 }
 }
 var e = function(t) {
 var e = t,
 n = Math.floor,
 r = Math.random;
 return t.uniform = function(t, e) {
 return t + (e - t) * r()
 }, t.uniformDiscrete = function(t, r) {
 return t + n((r - t + 1) * e.uniform(0, 1))
 }, t
 }({}),
 n = function(t, e) {
 if(!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
 },
 r = function() {
 function t(t, e) {
 for(var n = 0; n < e.length; n++) {
  var r = e[n];
  r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(t, r.key, r)
 }
 }
 return function(e, n, r) {
 return n && t(e.prototype, n), r && t(e, r), e
 }
 }(),
 i = window.requestAnimationFrame || window.webkitRequestAnimationFrame || function(t) {
 return setTimeout(t, 16)
 },
 o = function() {
 function o() {
 n(this, o);
 var t = this.canvas = document.createElement("canvas"),
  e = this.context = t.getContext("2d"),
  r = this._children = [],
  u = function n() {
  i(n), e.clearRect(0, 0, t.width, t.height);
  for(var o = 0, u = r.length; o < u;) {
  var a = r[o];
  a.render.call(null, (a.timestamp + a.duration - new Date) / a.duration) ? (r.splice(o, 1), u--) : o++
  }
  };
 i(u)
 }
 return r(o, [{
 key: "bubble",
 value: function(n) {
  var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : e.uniformDiscrete(2400, 3600),
  i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t(n, this.canvas, this.context);
  return this._children.push({
  render: i,
  duration: r,
  timestamp: +new Date
  }), this
 }
 }]), o
 }();
 return o
});
// 图片地址在此处更换 可换成你的图片
var assets = [
 'img/1.png',
 'img/2.png',
 'img/3.png',
 'img/4.png',
 'img/5.png',
];
assets.forEach(function(src, index) {
 assets[index] = new Promise(function(resolve) {
 var img = new Image;
 img.onload = resolve.bind(null, img);
 img.src = src;
 });
});
 
Promise.all(assets).then(function(images) {
 
 var random = {
 uniform: function(min, max) {
 return min + (max - min) * Math.random();
 },
 uniformDiscrete: function(i, j) {
 return i + Math.floor((j - i + 1) * random.uniform(0, 1));
 },
 };
 
 var stage = new BubbleHearts();
 var canvas = stage.canvas;
 canvas.width = 170;
 canvas.height = 300;
 canvas.style['width'] = '170px';
 canvas.style['height'] = '300px';
 document.body.appendChild(canvas);
 //journal-reward 为赏桃的按钮 
 document.getElementsByClassName('journal-reward')[0].addEventListener('click', function() {
 //随机飘动
 stage.bubble(images[random.uniformDiscrete(0, images.length - 1)]);
 
 }, false);
 
});

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

Javascript 相关文章推荐
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
jquery使用on绑定a标签无效 只能用live解决
Jun 02 Javascript
JavaScript编程中实现对象封装特性的实例讲解
Jun 24 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
angular4自定义组件详解
Sep 28 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
Feb 26 Javascript
jQuery实现验证用户登录
Dec 10 jQuery
JavaScript实现旋转木马轮播图
Mar 16 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 Javascript
js实现鼠标点击飘爱心效果
Aug 19 #Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 #Javascript
Vue实现导航栏菜单
Aug 19 #Javascript
vue实现tab栏点击高亮效果
Aug 19 #Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 #Javascript
JS实现页面鼠标点击出现图片特效
Aug 19 #Javascript
Vue实现点击导航栏当前标签后变色功能
Aug 19 #Javascript
You might like
怎样辨别一杯好咖啡
2021/03/03 新手入门
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
Smarty模板语法详解
2019/07/20 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
document.getElementById介绍
2011/09/13 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python3.5绘制随机漫步图
2018/08/27 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
提升python处理速度原理及方法实例
2019/12/25 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
网络工程师个人的自我评价范文
2013/10/01 职场文书
社区春季防火方案
2014/06/02 职场文书
生产现场禁烟通知
2015/04/23 职场文书