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 相关文章推荐
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
JS获取当前网址、主机地址项目根路径
Nov 19 Javascript
js禁止页面刷新与后退的方法
Jun 08 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
js实现图片放大展示效果
Aug 30 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
解决vue项目使用font-awesome,build后路径的问题
Sep 01 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
微信小程序实现图片压缩
Dec 03 Javascript
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
python和php哪个容易学
2020/06/19 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
农村面貌改造提升实施方案
2014/03/18 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android