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 相关文章推荐
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
vue 注册组件的使用详解
May 05 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
vue实现购物车的监听
Apr 20 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 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
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
深入解析php中的foreach问题
2013/06/30 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
Smarty3配置及入门语法
2017/02/22 PHP
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
Vue 中axios配置实例详解
2018/07/27 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
vue实例的选项总结
2020/06/09 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
带你认识Django
2019/01/15 Python
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
小学生环保标语
2014/06/13 职场文书
完整版商业计划书
2014/09/15 职场文书
煤矿安全保证书
2015/02/27 职场文书
家装业务员岗位职责
2015/04/03 职场文书
人事聘任通知
2015/04/21 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
民间借贷借条如何写
2015/05/26 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers