js多个物体运动问题2
问题1
http://www.cnblogs.com/huaci/p/3854216.html
在上一讲问题1,我们可以整理出2点:
1,定时器作为运动物体的属性
2,startMove方法,参数要传递2个:物体,目标值
那么,如果运动物体的属性值改变,是通过一个变量值来改变的话,这时候会有什么问题呢?
示例:多个Div淡入淡出
现象:onmouseover时,透明度降低;onmouseout时,透明度增加
看看它会有什么问题,请看下面代码
html部分:
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div> <style>
div { float:left; width:150px; height:200px; margin:20px; filter:alpha(opacity:30); opacity:0.3; background:green;}
</style>
js部分:
<script> window.onload = function(){
var aDiv = document.getElementsByTagName("div"); for(var i=0; i<aDiv.length; i++){
aDiv[i].timer = null;
aDiv[i].onmouseover = function(){
startMove(this,100);
}
aDiv[i].onmouseout = function(){
startMove(this,30);
}
}
} var vAlpha = 30;
function startMove(obj, iTarget){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var speed = (iTarget - vAlpha)/6;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if(vAlpha == iTarget){
clearInterval(obj.timer);
} else {
vAlpha +=speed;
obj.style.filter = "alpha(opacity:" + vAlpha + ")";
obj.style.opacity = vAlpha; document.title = vAlpha; //检测问题现象
} },30);
} </script>
运行上面代码,发现
问题现象:快速的在几个div之间移动,然后在其中一个div上停止。
会发现每个div的透明度色彩不一样。
检测:document.title = vAlpha;
原因:vAlpha作为全局变量引起的。当从A中移出时,它减小。再迅速移入B中,它增加。一个要减小,一个要增加,这两个就这样绷着。
解决:
将vAlpha作为物体的属性
aDiv[i].vAlpha = 30;
启示:对于多物体运动来说,所有东西都不能共用
修改后的代码如下
完整示例:
<script> window.onload = function(){
var aDiv = document.getElementsByTagName("div"); for(var i=; i<aDiv.length; i++){
aDiv[i].timer = null;
aDiv[i].vAlpha = ;
aDiv[i].onmouseover = function(){
startMove(this,);
}
aDiv[i].onmouseout = function(){
startMove(this,);
}
}
} //var vAlpha = 30;
function startMove(obj, iTarget){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var speed = (iTarget - obj.vAlpha)/;
speed = speed > ? Math.ceil(speed) : Math.floor(speed); if(obj.vAlpha == iTarget){
clearInterval(obj.timer);
} else {
obj.vAlpha +=speed;
obj.style.filter = "alpha(opacity:" + obj.vAlpha + ")";
obj.style.opacity = obj.vAlpha; document.title = obj.vAlpha; //检测问题现象
} },);
} </script>
综上,发现:
可以整理以下几条:
多物体运动框架:
1,定时器作为物体的属性
2,参数的传递:物体,目标值
例子:多个Div淡入淡出
1,所有东西都不能共用
2,属性与运动对象绑定:速度,其它属性值(如透明度等)
js多个物体运动问题2的更多相关文章
- js多个物体运动的问题1
问题2 http://www.cnblogs.com/huaci/p/3854304.html 用js写一个物体的运动很简单.如果一个页面有多个物体在运动,它会不会出问题呢? ok,我们来看一个示例 ...
- js动画---多物体运动
对于多物体运动和单个物体运动来说,没有特别大的区别,实现原理基本上是一样的,都是通过定时器来实现的,但是多物体有一些地方需要注意,具体哪些需要注意,我将在下面的程序中说明. 首先,我们需要建立几个li ...
- JS定时器做物体运动
JS定时器是函数 setInterval(函数体/函数名 , 时间) 清楚定时器 clearInterval(函数) 时间单位(毫秒) 1000毫秒 = 1秒 首先我们要知道用JS定时器能干什么? ...
- js实现多物体运动框架并兼容各浏览器
首先,我们须要知道在js中获取对象的宽度如offsetWidth等.可能会存在一些小小的bug.原因之中的一个在于offsetWidth只不过获取盒子模型中内容的部分宽度.并不包括内边距,边框和外边距 ...
- js 运动函数篇 (一) (匀速运动、缓冲运动、多物体运动、多物体不同值运动、多物体多值运动)层层深入
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写 匀速运动.缓冲运动.多物体运 ...
- js动画之多物体运动
多个物体这不能使用一个定时器了,要给每个物体一个定时器 <!DOCTYPE html> <html lang="en"> <head> < ...
- [js]多个物体的运动
与单个的区别:得知道哪个在动,所以运动函数需要两个参数,出了目标iTarget之外,还要obj.另外需要多个计数器,否则当一个还没运动完就移入另一个物体会发生卡壳 window.onload=func ...
- three.js之让物体动起来方式(一)移动摄像机
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【unity3d游戏开发脚本笔记之一:坐标系选择对物体运动的影响】
时间:2016年9月24日17:38:21 作者:yexiaopeng 博客园 在unity3d的世界中,其坐标系可分为四种,世界坐标系-WorldSpace 本地坐标系-LocalS ...
随机推荐
- osc搜索引擎框架search-framework,TngouDB,gso,
项目目的:OSChina 实现全文搜索的简单封装框架 License: Public Domain 包含内容: 重建索引工具 -> IndexRebuilder.java 增量构建索引工具 -& ...
- STM32M CUBE实现printf打印调试信息以及实现单字节接收
在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不能够直接使用的.必须做点对库函数的修改. 具体project下载地址: http://download.csdn.ne ...
- Java 泛型具体解释
在Java SE1.5中.添加了一个新的特性:泛型(日本语中的总称型).何谓泛型呢?通俗的说.就是泛泛的指定对象所操作的类型.而不像常规方式一样使用某种固定的类型去指定. 泛型的本质就是将所操作的数据 ...
- JavaScript 中的闭包和作用域链(读书笔记)
要想理解闭包,应当先理解JavaScript的作用域和作用域链. JavaScript有一个特性被称之为“声明提前(hoisting)”,即JavaScript函数里声明的所有变量(但不涉及赋值)都被 ...
- Linux目录文件详解FHS标准(2013.09.05)
Linux 目录配置的依据FHS(Filesystem Hierarchy Standard)标准,将目录分成为四种交互作用的形态: 四种形态的具体解释: 可分享的:可以分享给其他系统挂载使用的目录, ...
- nyist oj 311 全然背包 (动态规划经典题)
全然背包 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 直接说题意,全然背包定义有N种物品和一个容量为V的背包.每种物品都有无限件可用.第i种物品的体积是c,价值是 ...
- like-minded 都有什么意思_百度知道
like-minded 都有什么意思_百度知道 like-minded 都有什么意思
- Compass用法指南
Compass用法指南 Sass是一种"CSS预处理器",可以让CSS的开发变得简单和可维护.但是,只有搭配Compass,它才能显出真正的威力. 本文介绍Compass的用法 ...
- Java 小样例:图书馆课程设计(Java 8 版)
用 Java 模拟一个图书馆.包含创建图书.创建读者.借书.还书.列出全部图书.列出全部读者.列出已借出的图书.列出过期未还的图书等功能. 每一个读者最多仅仅能借 3 本书,每一个书最多仅仅能借 3 ...
- 解决Android Device Chooser 找不到设备问题
第一种情况: 已经启动了官方的模拟器也进入了Android手机界面,可是在Android Device Chooser 看不到设备,怎么办? 例如以下图所看到的,使用Reset adb 或者在adb所 ...