jQuery模拟物体自由落体运动(附演示与demo源码下载)


Posted in Javascript onJanuary 21, 2016

本文实例讲述了jQuery模拟物体自由落体运动的方法。分享给大家供大家参考,具体如下:

运行效果截图如下:

jQuery模拟物体自由落体运动(附演示与demo源码下载)

点击此处查看在线演示效果。

完整实例代码点击此处本站下载。

具体代码如下:

<!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>自由落体</title>
 <script src="jquery-1.7.1.min.js" type="text/javascript"></script>
 <script type="text/javascript" >
  $(document).ready(function () {
  });
  var all_Height = 500;
  var a = 9.8; // 加速度
  var v = 0;
  var prev_Time = 0;
  var prev_Speed = 0;
  var prev_Height = 0;
  var speed = 0;
  // 获取当前的高度
  var getHeight = function (obj) {
   return obj.offset().top;
  }
  // 获取当前的速度
  var getSpeed = function (time, a) {
   return time * a;
  }
  // 向下走时获得当前物体所走的路径
  var getCurrentHeight = function (time) {
   return 1 / 2 * a * time * time;
  }
  // 向上走时获得当前物体所走的路径
  var getCurrentHeight2 = function (speed, time) {
   return speed * time - 1 / 2 * a * time * time;
  }
  // 向下跑
  function down() {
   prev_Time = 0;
   var interval = setInterval(function () {
    if (getHeight($(".obj")) < all_Height) {
     prev_Time = prev_Time + 0.1;
     var height = getCurrentHeight(prev_Time) + prev_Height;
     $(".obj").css("top", height + "px");
     $(".info").append("<div>" + height + "</div>");
    } else {
     speed = getSpeed(a, prev_Time);
     prev_Speed = speed;
     clearInterval(interval);
     up();
    }
   }, 5);
  }
  // 向上跑
  function up() {
   prev_Time = 0;
   prev_Speed -= 4; // 动能损耗
   var interval = setInterval(function () {
    if (speed > 0) {
     speed = prev_Speed - getSpeed(a, prev_Time);
     prev_Time = prev_Time + 0.1;
     var height = all_Height - getCurrentHeight2(prev_Speed, prev_Time);
     $(".obj").css("top", height + "px");
    } else {
     clearInterval(interval);
     prev_Height = $(".obj").offset().top;
     if (prev_Height < all_Height) {
      down();
     }
    }
   }, 5);
  }
  function play() {
   alert('play');
   down();
   document.getElementById("obj").onclick = null;
  }
 </script>
 <style type="text/css">
 body{ margin:0 0 0 0 ; background:#FFFFFF;}
 .title { text-align:center; color:#666666; border-bottom:2px solid gray; font-size:30px; line-height:100px; font-weight:bolder;}
 .obj { background-image:url('a.jpg'); width:50px; height:50px; position:absolute; top:0; left:0; }
 </style>
</head>
<body>
<div style="height:550px; border-bottom:2px solid gray;">
<div class="title" >自由落体大模拟<span style="font-size:12px;">(点击图片让它落下)</span></div>
</div>
<div class="obj" id="obj" onclick="play();" ></div>
</body>
</html>

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

Javascript 相关文章推荐
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
JS判断是否长按某一键的方法
Mar 02 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 Javascript
详解浏览器渲染页面过程
Feb 09 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
JavaScript判断输入是否为数字类型的方法总结
Sep 28 Javascript
Angular整合zTree的示例代码
Jan 24 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 Javascript
Javascript webpack动态import
Apr 19 Javascript
angularjs表格分页功能详解
Jan 21 #Javascript
使用angularjs创建简单表格
Jan 21 #Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 #Javascript
Javascript中神奇的this
Jan 20 #Javascript
javascript实现图片轮播效果
Jan 20 #Javascript
JS获取鼠标坐标位置实例分析
Jan 20 #Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 #Javascript
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
php学习之运算符相关概念
2011/06/09 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
php魔术变量用法实例详解
2014/11/13 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
loading动画特效小结
2017/01/22 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现多线程行情抓取工具的方法
2018/02/28 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
python实现批处理文件
2020/07/28 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
影视制作岗位职责
2013/12/04 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
如何在Python中创建二叉树
2021/03/30 Python