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 获取表单text,areatext,radio,checkbox,select值的代码
Nov 12 Javascript
ExtJs事件机制基本代码模型和流程解析
Oct 24 Javascript
js简易namespace管理器 实例代码
Jun 21 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
ajax跨域调用webservice的实现代码
May 09 Javascript
谈一谈bootstrap响应式布局
May 23 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
May 13 Javascript
通过vue刷新左侧菜单栏操作
Aug 06 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调用三种数据库的方法(3)
2006/10/09 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python3.4实现邮件发送功能
2018/05/28 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
python中threading开启关闭线程操作
2020/05/02 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
国际会议邀请函范文
2014/01/16 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
团日活动总结模板
2014/06/25 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android