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 相关文章推荐
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
js导出格式化的excel 实例方法
Jul 17 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
AngularJS中实现动画效果的方法
Jul 28 Javascript
vue使用Axios做ajax请求详解
Jun 07 Javascript
Vue插件打包与发布的方法示例
Aug 20 Javascript
django使用channels2.x实现实时通讯
Nov 28 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
微信小程序实现批量倒计时功能
Nov 01 Javascript
vue-父子组件和ref实例详解
Nov 10 Javascript
微信小程序点击view动态添加样式过程解析
Jan 21 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
vue组件的写法汇总
2018/04/12 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
详解package.json版本号规则
2019/08/01 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
Python动态加载模块的3种方法
2014/11/22 Python
python 调用HBase的简单实例
2016/12/18 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
心理学专业毕业生推荐信范文
2013/11/21 职场文书
土木工程师岗位职责
2013/11/24 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
世界水日宣传活动总结
2015/02/09 职场文书