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 = 0;
    var canvasWidth = 0;
    var g = 9.8;
    function Cast(context, castSettings) {
      Cast.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+")";
      }
      var _self = this;
      // x, y, radian, r, v
      $.extend(_self, castSettings);
      _self.radian = _self.radian / 180 * Math.PI;
      _self.vo = _self.v;
      _self.vxo = Math.cos(_self.radian) * _self.vo;
      _self.vyo = Math.sin(_self.radian) * _self.vo;
      console.log("vyo:"+_self.vyo+":vxo:"+_self.vxo+":"+_self.radian);
      _self.prevTime = new Date().getTime();
      _self.xo = _self.x;
      _self.yo = _self.y;
      _self.cast = function () {
        if (_self.x > canvasWidth - _self.r || _self.y > _self.yo) {
          return;
        }
        var time = (new Date().getTime() - _self.prevTime) / 1000;
        var x = _self.vxo * time;
        var y = _self.vyo * time - 1 / 2 * g * time * time;
        console.log(time+":"+_self.yo+":"+_self.xo+":"+y);
        context.beginPath();
        context.fillStyle = Cast.createColor();
        context.arc(x + _self.xo, _self.yo- y , _self.r, 0, 2 * Math.PI);
        context.fill();
        context.closePath();
        _self.x = x + _self.xo;
        _self.y = _self.yo - y;
        setTimeout(function () {
          _self.cast();
        }, 30);
      }
      _self.cast();
    }
    $(document).ready(function () {
      var canvas = $("#canvas");
      var context = canvas.get(0).getContext('2d');
      canvasHeight = canvas.height();
      canvasWidth = canvas.width();
      new Cast(context, { x: 0, y: 400, v: 70, r: 5, radian: 20 });
      new Cast(context, { x: 0, y: 400, v: 70, r: 5, radian: 30 });
      new Cast(context, { x: 0, y: 400, v: 70, r: 5, radian: 40 });
      new Cast(context, { x: 0, y: 400, v: 70, r: 5, radian: 50 });
      new Cast(context, { x: 0, y: 400, v: 70, r: 5, radian: 60 });
      new Cast(context, { x: 0, y: 400, v: 70, r: 5, radian: 70 });
    });
  </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="500" height="500"></canvas>
 <hr />
 </center>
</body>
</html>

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

Javascript 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
jquery选择符快速提取web表单数据示例
Mar 27 Javascript
如何获取网站icon有哪些可行的方法
Jun 05 Javascript
javascript返回顶部的按钮实现方法
Jan 09 Javascript
使用jquery提交form表单并自定义action的方法
May 25 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
webpack构建vue项目的详细教程(配置篇)
Jul 17 Javascript
Js经典案例的实例代码
May 10 Javascript
JS实现星星海特效
Dec 24 Javascript
JS函数式编程实现XDM一
Jun 16 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
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 #Javascript
You might like
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
Javascript 学习书 推荐
2009/06/13 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
JavaScript类的写法
2016/09/17 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
python实现验证码识别功能
2018/06/07 Python
python中for用来遍历range函数的方法
2018/06/08 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
Python中调用其他程序的方式详解
2019/08/06 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
详解如何修改python中字典的键和值
2020/09/29 Python
大专生自我鉴定范文
2013/10/01 职场文书
家长学校实施方案
2014/03/15 职场文书
租房协议书怎么写
2014/04/10 职场文书
部门年终奖分配方案
2014/05/07 职场文书
企业党员个人自我评价
2014/09/20 职场文书
世界气象日活动总结
2015/02/27 职场文书
城南旧事观后感
2015/06/11 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
OpenCV-Python实现油画效果的实例
2021/06/08 Python