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 类型判断代码分析
Mar 28 Javascript
jquery+php随机生成红包金额数量代码分享
Aug 27 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
Dec 08 Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
5分钟打造简易高效的webpack常用配置
Jul 04 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
Jan 26 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
angular6开发steps步骤条组件
Jul 04 Javascript
vue 源码解析之虚拟Dom-render
Aug 26 Javascript
vue-cli在 history模式下的配置详解
Nov 26 Javascript
JS中作用域以及变量范围分析
Jul 18 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实现今天是星期几的几种写法
2013/09/26 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
高效使用Python字典的清单
2018/04/04 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
python opencv实现简易画图板
2020/08/27 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
python各种excel写入方式的速度对比
2020/11/10 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
2014年财务个人工作总结
2014/12/08 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
浅析JavaScript中的变量提升
2022/06/01 Javascript