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 相关文章推荐
利用jQuery的$.event.fix函数统一浏览器event事件处理
Dec 21 Javascript
JS实现self的resend
Jul 22 Javascript
js确认删除对话框适用于a标签及submit
Jul 10 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
Oct 26 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 Javascript
JavaScript实现图片瀑布流和底部刷新
Jan 02 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
node.js操作mysql简单实例
May 25 Javascript
浅谈函数调用的不同方式,以及this的指向
Sep 17 Javascript
js实现多图和单图上传显示
Dec 18 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
SSI指令
2006/11/25 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
python输出指定月份日历的方法
2015/04/23 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
幼儿园校车司机的岗位职责
2014/01/30 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
秋季运动会加油词
2015/07/18 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
Java数组与堆栈相关知识总结
2021/06/29 Java/Android