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库 开发规则
Jan 31 Javascript
javascript拓展DOM操作 prependChild insertAfert
Nov 17 Javascript
jQuery图片的展开和收缩实现代码
Apr 16 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
jQuery实现动画效果的简单实例
Jan 27 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
vuejs使用FormData实现ajax上传图片文件
Aug 08 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
May 20 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去除重复字的实现代码
2011/09/16 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
js图片处理示例代码
2014/05/12 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
基于Django的python验证码(实例讲解)
2017/10/23 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python实现单链表的方法示例
2019/09/03 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
pandas的相关系数与协方差实例
2019/12/27 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
AOP的定义以及作用
2013/09/08 面试题
高二英语教学反思
2014/01/19 职场文书
草船借箭教学反思
2014/02/03 职场文书
小学生安全教育心得体会
2016/01/15 职场文书