jQuery+canvas实现的球体平抛及颜色动态变换效果


Posted in Javascript onJanuary 28, 2016

本文实例讲述了jQuery+canvas实现的球体平抛及颜色动态变换效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

jQuery+canvas实现的球体平抛及颜色动态变换效果

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>canvas平抛</title>
  <script src="jquery-1.7.1.min.js" type="text/javascript"></script>
  <script type="text/javascript" >
    var canvasHeight = 300;
    var canvasWidth = 300;
    var g = 9.8;
    //x, y, vo, r
    function HorizenCast(context, settings) {
      var _self = this;
      $.extend(_self, settings);
      _self.xo = _self.x;
      _self.yo = _self.y;
      HorizenCast.createColor = function () {
        var r = Math.round(Math.random() * 256),
          g = Math.round(Math.random() * 256),
          b = Math.round(Math.random() * 256);
        return "rgb("+r+","+g+","+b+")";
      }
      _self.cast = function () {
        if (_self.x > canvasWidth - _self.r || _self.y > canvasHeight - _self.r) {
          return;
        }
        var time = (new Date().getTime() - _self.prevTime) / 1000,
          x = _self.xo +_self.vo * time,
          y = _self.yo + 1 / 2 * g * time * time;
        context.beginPath();
        context.fillStyle = HorizenCast.createColor();
        context.arc(_self.x, _self.y, _self.r, 0, 2 * Math.PI);
        context.fill();
        context.closePath();
        _self.x = x;
        _self.y = y;
        setTimeout(function () {
          _self.cast();
        }, 30);
      }
      _self.prevTime = new Date().getTime();
      _self.cast();
    }
    $(document).ready(function () {
      var canvas = document.getElementById("canvas");
      var context = canvas.getContext('2d');
      new HorizenCast(context, { x: 0, y: 0, vo: 100, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 90, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 80, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 70, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 60, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 50, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 40, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 30, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 20, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 10, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 5, r: 5 });
    });
  </script>
  <style type="text/css" >
  h2 { color:Gray; line-height:50px; }
  #canvas { background:#DDDDDD;}
  </style>
</head>
<body>
 <center>
 <h3>canvas实现平抛效果</h3>
 <hr />
 <canvas id="canvas" width="300" height="300"></canvas>
 <hr />
 </center>
</body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
javascript不同页面传值的改进版
Sep 30 Javascript
input+select(multiple) 实现下拉框输入值
May 21 Javascript
Google 静态地图API实现代码
Nov 19 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
利用window.name实现windowStorage代码分享
Jan 02 Javascript
用js设置下拉框为只读的小技巧
Apr 10 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
Node.js中process模块常用的属性和方法
Dec 13 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
Jul 03 Javascript
vue2中filter()的实现代码
Jul 09 Javascript
vue弹窗消息组件的使用方法
Sep 24 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 #Javascript
基于javascript实现动态显示当前系统时间
Jan 28 #Javascript
jQuery实现div随意拖动的实例代码(通用代码)
Jan 28 #Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 #Javascript
使用node+vue.js实现SPA应用
Jan 28 #Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 #Javascript
javascript实现随机显示星星特效
Jan 28 #Javascript
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
js异或加解密效果代码
2008/06/25 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python实现多线程抓取妹子图
2015/08/08 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
TensorFlow的权值更新方法
2018/06/14 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
python 如何将office文件转换为PDF
2020/09/22 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
2015年项目工作总结
2015/04/29 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android