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 Class对象学习
Jul 19 Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 Javascript
jquery 使用简明教程
Mar 05 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
JS实现漂亮的时间选择框效果
Aug 20 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
利用vscode编写vue的简单配置详解
Jun 17 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
React props和state属性的具体使用方法
Apr 12 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 Javascript
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 Javascript
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
基于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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
优化javascript的执行速度
2010/01/23 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
js实现拖拽效果
2015/02/12 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
js中的面向对象入门
2017/03/06 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
nodejs aes 加解密实例
2018/10/10 NodeJs
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
PyQt5响应回车事件的方法
2019/06/25 Python
Python读取YAML文件过程详解
2019/12/30 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
软件测试常见笔试题
2012/02/04 面试题
运动会表扬稿大全
2014/01/16 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
纠纷协议书
2014/04/16 职场文书
大二学生自我检讨书
2014/10/23 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis