zoukankan      html  css  js  c++  java
  • 碰撞运动

    1. 物体掉落

     1     window.onload = startMove;
     2     
     3     var iSpeedX = 100;
     4     var iSpeedY = 8;
     5 
     6     function startMove() {
     7         setInterval(function() {
     8             var oDiv = document.getElementById("div1");
     9 
    10             //加重力
    11             iSpeedY += 5;
    12 
    13             var l = oDiv.offsetLeft + iSpeedX;
    14             var t = oDiv.offsetTop + iSpeedY;
    15 
    16             //防止出界
    17             if (l >= document.documentElement.clientWidth - oDiv.offsetWidth) {
    18                 iSpeedX *= -0.8;
    19                 l = document.documentElement.clientWidth - oDiv.offsetWidth;
    20             } else if (l <= 0) {
    21                 iSpeedX *= -0.8;
    22                 l = 0;
    23             }
    24 
    25             if (t >= document.documentElement.clientHeight - oDiv.offsetHeight) {
    26                 iSpeedY *= -0.8;
    27                 iSpeedX *= 0.8;
    28                 t = document.documentElement.clientHeight - oDiv.offsetHeight;
    29             } else if (t <= 0) {
    30                 iSpeedY *= -0.8;
    31                 iSpeedX *= 0.8;
    32                 t = 0;
    33             }
    34 
    35             //解决小数为负数不停止滑动的问题
    36             if (Math.abs(iSpeedX) < 1) {
    37                 iSpeedX = 0;
    38             }
    39 
    40             if (Math.abs(iSpeedY) < 1) {
    41                 iSpeedY = 0;
    42             }
    43 
    44             oDiv.style.left = l + "px";
    45             oDiv.style.top = t + "px";
    46         }, 30);
    47     }

    2. 抛扔物体

     1     window.onload = function() {
     2         var oDiv = document.getElementById("div1");
     3         var lastX = 0;
     4         var lastY = 0;
     5 
     6         oDiv.onmousedown = function(ev) {
     7             clearInterval(timer);
     8 
     9             var oEvent = ev || event;
    10             var disX = oEvent.clientX - oDiv.offsetLeft;
    11             var disY = oEvent.clientY - oDiv.offsetTop;
    12 
    13             document.onmousemove = function(ev) {
    14                 var oEvent = ev || event;
    15 
    16                 var l = oEvent.clientX - disX;
    17                 var t = oEvent.clientY - disY;
    18 
    19                 oDiv.style.left = l + "px";
    20                 oDiv.style.top = t + "px";
    21 
    22                 //计算时刻位移来获取速度
    23                 iSpeedX = l - lastX;
    24                 iSpeedY = t - lastY;
    25 
    26                 lastX = l;
    27                 lastY = t;
    28             };
    29 
    30             document.onmouseup = function() {
    31                 document.onmousemove = null;
    32                 document.onmouseup = null;
    33                 startMove();
    34             };
    35         };
    36     };
    37     var timer = null;
    38     var iSpeedX = 0;
    39     var iSpeedY = 0;
    40 
    41     function startMove() {
    42         clearInterval(timer);
    43         timer = setInterval(function() {
    44             var oDiv = document.getElementById("div1");
    45 
    46             //加重力
    47             iSpeedY += 5;
    48 
    49             var l = oDiv.offsetLeft + iSpeedX;
    50             var t = oDiv.offsetTop + iSpeedY;
    51 
    52             //防止出界
    53             if (l >= document.documentElement.clientWidth - oDiv.offsetWidth) {
    54                 iSpeedX *= -0.8;
    55                 l = document.documentElement.clientWidth - oDiv.offsetWidth;
    56             } else if (l <= 0) {
    57                 iSpeedX *= -0.8;
    58                 l = 0;
    59             }
    60 
    61             if (t >= document.documentElement.clientHeight - oDiv.offsetHeight) {
    62                 iSpeedY *= -0.8;
    63                 iSpeedX *= 0.8;
    64                 t = document.documentElement.clientHeight - oDiv.offsetHeight;
    65             } else if (t <= 0) {
    66                 iSpeedY *= -0.8;
    67                 iSpeedX *= 0.8;
    68                 t = 0;
    69             }
    70 
    71             //解决小数为负数不停止滑动的问题
    72             if (Math.abs(iSpeedX) < 1) {
    73                 iSpeedX = 0;
    74             }
    75 
    76             if (Math.abs(iSpeedY) < 1) {
    77                 iSpeedY = 0;
    78             }
    79 
    80             //运动终止条件
    81             if (iSpeedX == 0 && iSpeedY == 0 
    82                 && t == document.documentElement.clientHeight - oDiv.offsetHeight) {
    83                 clearInterval(timer);
    84             } else {
    85                 oDiv.style.left = l + "px";
    86                 oDiv.style.top = t + "px";
    87             }
    88         }, 30);
    89     }
  • 相关阅读:
    Centos7下thinkphp5.0环境配置
    win10蓝牙鼠标无法连接,需pin码
    thinkphp5自带workerman应用
    php文件加密(screw方式)
    centos修改ssh默认端口号的方法
    修改CentOS ll命令显示时间格式
    在线编辑器的原理简单示例
    [转载]提升SQLite数据插入效率低、速度慢的方法
    linux 客户机挂载vitualbox共享文件夹
    virtualbox linux客户机中安装增强功能包缺少kernel头文件问题解决
  • 原文地址:https://www.cnblogs.com/huoteng/p/5049796.html
Copyright © 2011-2022 走看看