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 相关文章推荐
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 Javascript
js 数组去重的四种实用方法
Sep 09 Javascript
JavaScript Math 对象常用方法总结
Apr 28 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
基于 Bootstrap Datetimepicker 联动
Aug 03 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
Feb 24 Javascript
谈谈JavaScript中super(props)的重要性
Feb 12 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
angular 实现下拉列表组件的示例代码
Mar 09 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 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小马小结(方便查找后门的朋友)
2012/05/05 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
详解React 16 中的异常处理
2017/07/28 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
Python  Django 母版和继承解析
2019/08/09 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
Delphi软件工程师试题
2013/01/29 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
写自荐信的注意事项
2014/03/09 职场文书
剪彩仪式主持词
2014/03/19 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
2015年调度员工作总结
2015/04/30 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
深入解析MySQL索引数据结构
2021/10/16 MySQL