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 写类方式之六
Jul 05 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 Javascript
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
Nov 03 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
微信小程序实现图片上传功能
May 28 Javascript
12个提高JavaScript技能的概念(小结)
May 09 Javascript
bootstrap table实现横向合并与纵向合并
Jul 18 Javascript
vue商城中商品“筛选器”功能的实现代码
Jul 01 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 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
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
javascript防抖函数debounce详解
2019/06/11 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
妇科医生自荐信
2013/11/05 职场文书
新闻专业本科生的自我评价分享
2013/11/20 职场文书
主题婚礼策划方案
2014/02/10 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
老员工辞职信范文
2015/05/12 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
MySQL Server 层四个日志
2022/03/31 MySQL