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 自动转到命名锚记
Jan 10 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
Oct 04 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
Oct 29 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
May 14 Javascript
jQuery原生的动画效果
Jul 10 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
微信小程序之几种常见的弹框提示信息实现详解
Jul 11 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
第十一节 重载 [11]
2006/10/09 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
PHP 错误处理机制
2015/07/06 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
Python模块学习 re 正则表达式
2011/05/19 Python
python实现多线程采集的2个代码例子
2014/07/07 Python
Python pickle模块用法实例分析
2015/05/27 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python批量处理文件或文件夹
2020/07/28 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
python 使用shutil复制图片的例子
2019/12/13 Python
django model通过字典更新数据实例
2020/04/01 Python
python不同系统中打开方法
2020/06/23 Python
高中英语演讲稿范文
2014/04/24 职场文书
中等生评语大全
2014/05/04 职场文书
市场营销专业求职信
2014/06/17 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers