JavaScript实现多个物体同时运动


Posted in Javascript onMarch 12, 2020

本文实例为大家分享了JavaScript实现多个物体同时运动的具体代码,供大家参考,具体内容如下

1、多个物体同时运动

 ---例子:多个Div,鼠标移入变宽
  单定时器,存在问题
  每个Div一个定时器

2、多物体运动框架

定时器作为物体的属性
参数的传递:物体、目标值
    ---例子:多个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);
  }
  }
 }
 //运动函数
 function startMove(obj, iTarget) {
 //清楚定时器函数
 //由于是是适应于多个对象的变化,所以每个DIV有一个定时器
 clearInterval(obj.timer);
 //定时器函数
 //每一个对象,有一个定时器
 obj.timer = setInterval(function() {
  //记录速度
  var iSpeed = (iTarget - obj.offsetWidth) / 5;
  iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
  //运动和停止的判断条件
  if (obj.offsetWidth == iTarget) {
  //清楚定时器函数
  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);
  }
  }
 }
 //运动函数
 function startMove(obj, iTarget) {
 //清楚定时器函数
 clearInterval(obj.timer);
 //定时器函数
 obj.timer = setInterval(function() {
  //记录速度
  var iSpeed = (iTarget - obj.alpha) / 8;
  iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
  //运动和停止的判断条件
  if (obj.alpha == iTarget) {
  //清楚定时器函数
  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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript CSS修改学习第一章 查找位置
Feb 19 Javascript
flexigrid 参数说明
Nov 23 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
JavaScript定时显示广告代码分享
Mar 02 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
Aug 31 Javascript
详解vue项目中实现图片裁剪功能
Jun 07 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
js实现贪吃蛇游戏(简易版)
Sep 29 Javascript
基于javascript实现碰撞检测
Mar 12 #Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
Mar 12 #jQuery
js 使用ajax设置和获取自定义header信息的方法小结
Mar 12 #Javascript
javascript实现拖拽碰撞检测
Mar 12 #Javascript
原生js实现碰撞检测
Mar 12 #Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
Mar 12 #Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 #Javascript
You might like
PHP常用数组函数介绍
2014/07/28 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
PHP实现文件上传与下载
2020/08/28 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
采用call方式实现js继承
2014/05/20 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
js date 格式化
2017/02/15 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python编程中的文件操作攻略
2015/10/16 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
竞聘上岗演讲稿范文
2014/01/10 职场文书
Django框架之路由用法
2022/06/10 Python