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 相关文章推荐
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
Apr 02 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
node.js中watch机制详解
Nov 17 Javascript
JS数组(Array)处理函数整理
Dec 07 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
详解使用 Node.js 开发简单的脚手架工具
Jun 08 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 Javascript
Node.js开发之套接字(socket)编程入门示例
Nov 05 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
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
Python实现画图软件功能方法详解
2020/07/28 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
司机的工作范围及职责
2013/11/13 职场文书
家长给小学生的评语
2014/01/30 职场文书
质量提升方案
2014/06/16 职场文书
天猫活动策划方案
2014/08/21 职场文书
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android
vue中div禁止点击事件的实现
2022/04/02 Vue.js
vue的项目如何打包上线
2022/04/13 Vue.js
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers