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 相关文章推荐
jQuery Tools tab使用介绍
Jul 14 Javascript
jquery实现商品拖动选择效果代码(自写)
May 28 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
JavaScript实现select添加option
Jul 03 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
jQuery中Datatables增加跳转到指定页功能
Feb 08 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
详解Vue2.0组件的继承与扩展
Nov 23 Javascript
基于JavaScript实现大文件上传后端代码实例
Aug 18 Javascript
JS实现可以用键盘方向键控制的动画
Dec 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
利用php获取服务器时间的实现代码
2013/06/07 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
浅析Python中的多重继承
2015/04/28 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
python中id函数运行方式
2020/07/03 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
公司出纳岗位职责
2013/12/07 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
党支部承诺书
2015/01/20 职场文书
欢迎词范文
2015/01/27 职场文书
幼师个人总结范文
2015/02/28 职场文书
技术转让协议书
2016/03/19 职场文书
2019入党申请书格式
2019/06/25 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang