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 = 300;
    var canvasWidth = 300;
    var g = 9.8;
    //x, y, vo, r
    function HorizenCast(context, settings) {
      var _self = this;
      $.extend(_self, settings);
      _self.xo = _self.x;
      _self.yo = _self.y;
      HorizenCast.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+")";
      }
      _self.cast = function () {
        if (_self.x > canvasWidth - _self.r || _self.y > canvasHeight - _self.r) {
          return;
        }
        var time = (new Date().getTime() - _self.prevTime) / 1000,
          x = _self.xo +_self.vo * time,
          y = _self.yo + 1 / 2 * g * time * time;
        context.beginPath();
        context.fillStyle = HorizenCast.createColor();
        context.arc(_self.x, _self.y, _self.r, 0, 2 * Math.PI);
        context.fill();
        context.closePath();
        _self.x = x;
        _self.y = y;
        setTimeout(function () {
          _self.cast();
        }, 30);
      }
      _self.prevTime = new Date().getTime();
      _self.cast();
    }
    $(document).ready(function () {
      var canvas = document.getElementById("canvas");
      var context = canvas.getContext('2d');
      new HorizenCast(context, { x: 0, y: 0, vo: 100, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 90, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 80, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 70, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 60, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 50, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 40, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 30, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 20, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 10, r: 5 });
      new HorizenCast(context, { x: 0, y: 0, vo: 5, r: 5 });
    });
  </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="300" height="300"></canvas>
 <hr />
 </center>
</body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
经常用到的JavasScript事件的翻译
Apr 09 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
Feb 04 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
用npm-run实现自动化任务的方法示例
Jan 14 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
Mar 27 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 Javascript
解决vue-loader加载不上的问题
Oct 21 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 #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
You might like
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
js实现网页随机验证码
2020/10/19 Javascript
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
中文系师范生自荐信
2013/10/01 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
篮球社团活动总结
2014/06/27 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
小学生作文评语集锦
2014/12/25 职场文书
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python