溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaScript實現(xiàn)多個物體同時運動

發(fā)布時間:2020-09-23 15:35:12 來源:腳本之家 閱讀:177 作者:Bwz_Learning 欄目:web開發(fā)

本文實例為大家分享了JavaScript實現(xiàn)多個物體同時運動的具體代碼,供大家參考,具體內(nèi)容如下

1、多個物體同時運動

 ---例子:多個Div,鼠標移入變寬
  單定時器,存在問題
  每個Div一個定時器

2、多物體運動框架

定時器作為物體的屬性
參數(shù)的傳遞:物體、目標值
    ---例子:多個Div淡入淡出
   所有東西都不能公用
   屬性與運動對象綁定
:速度、其他屬性值(如透明度等)

3、多個Div,鼠標移入變寬的例子

3.1 代碼

<head>
 <meta charset="UTF-8">
 <title>多物體運動框架</title>
 <style type="text/css">
 div {
 width: 100px;
 height: 50px;
 background: red;
 margin-top: 50px;
 }
 </style>
 <script type="text/javascript">
 window.onload = function() {
  //獲取元素
  var aDiv = document.getElementsByTagName("div");
  for (var i = 0; i < aDiv.length; i++) {
  aDiv[i].onmousemove = function() {
  startMove(this, 300);
  }
  aDiv[i].onmouseout = function() {
  startMove(this, 100);
  }
  }
 }
 //運動函數(shù)
 function startMove(obj, iTarget) {
 //清楚定時器函數(shù)
 //由于是是適應(yīng)于多個對象的變化,所以每個DIV有一個定時器
 clearInterval(obj.timer);
 //定時器函數(shù)
 //每一個對象,有一個定時器
 obj.timer = setInterval(function() {
  //記錄速度
  var iSpeed = (iTarget - obj.offsetWidth) / 5;
  iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
  //運動和停止的判斷條件
  if (obj.offsetWidth == iTarget) {
  //清楚定時器函數(shù)
  clearInterval(obj.timer);
  } else {
  obj.style.width = obj.offsetWidth + iSpeed + 'px';
  }
 }, 30);
 }
 </script>
 </head>
 
 <body>
 <div></div>
 <div></div>
 <div></div>
</body>

3.2 多個DIV淡入淡出的例子

<head>
 <meta charset="UTF-8">
 <title>多物體運動框架</title>
 <style type="text/css">
 div {
 width: 100px;
 height: 100px;
 background: red;
 margin-top: 50px;
 filter: alpha(opacity: 30);
 opacity: 0.3;
 }
 </style>
 <script type="text/javascript">
 window.onload = function() {
  //獲取元素
  var aDiv = document.getElementsByTagName("div");
  for (var i = 0; i < aDiv.length; i++) {
  //將alpha作為,物體的一個屬性
  aDiv[i].alpha = 30;
  aDiv[i].onmousemove = function() {
  startMove(this, 100);
  }
  aDiv[i].onmouseout = function() {
  startMove(this, 30);
  }
  }
 }
 //運動函數(shù)
 function startMove(obj, iTarget) {
 //清楚定時器函數(shù)
 clearInterval(obj.timer);
 //定時器函數(shù)
 obj.timer = setInterval(function() {
  //記錄速度
  var iSpeed = (iTarget - obj.alpha) / 8;
  iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
  //運動和停止的判斷條件
  if (obj.alpha == iTarget) {
  //清楚定時器函數(shù)
  clearInterval(obj.timer);
  } else {
  obj.alpha += iSpeed;
  obj.style.filter = 'alpha(opacity:' + obj.alpha + ')';
  obj.style.opacity = obj.alpha / 100;
  }
 }, 30);
 }
 </script>
 </head>
 
 <body>
 <div></div>
 <div></div>
 <div></div>
 <div></div>
 
</body>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI