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 相关文章推荐
Prototype源码浅析 Enumerable部分(二)
Jan 18 Javascript
Javascript数组的排序 sort()方法和reverse()方法
Jun 04 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
Mar 23 Javascript
高效的jquery数字滚动特效
Dec 17 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
微信小程序 Page()函数详解
Oct 17 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
Vue组件开发技巧总结
Mar 04 Javascript
js通过canvas生成图片缩略图
Oct 02 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
web方式ftp
2006/10/09 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
php生成静态页面的简单示例
2014/04/17 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
jQuery实现本地存储
2020/12/22 jQuery
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
Python中每次处理一个字符的5种方法
2015/05/21 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
python添加模块搜索路径方法
2017/09/11 Python
一份python入门应该看的学习资料
2018/04/11 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
python实现从wind导入数据
2019/12/03 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
质量管理标语
2014/06/12 职场文书
汽车维修求职信
2014/06/15 职场文书
岗位说明书标准范本
2014/07/30 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
国家助学金受助感言
2015/08/01 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL