/* “完美运动框架”,所谓“完美”,就是可以实现多个参数,多个物体运动互不影响的一个运动函数move()。
* 大致结构如下:运动框架 EXP: move(obj,{width:200,height:200},fnEnd)
* obj: 运动物体
* json: 运动属性和运动目标值的json集合,{'width':200,'height':200}
* sv: 运动的速度,speed-value,值越小速度越大
* fnEnd: 运动结束后的回调函数
*/ function move(obj, json, sv, fnEnd) {
//取CSS样式值
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, false)[attr];
}
}
//运动开始
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var isAllCompleted = true; //假设全部运动都完成了
for (attr in json) {
var attrValue = 0;
switch (attr) {
case 'opacity':
attrValue = Math.round(parseFloat(getStyle(obj, attr)) * 100);
break;
default:
attrValue = parseInt(getStyle(obj, attr));
}
//如果没有传入sv,则为4
var speed = (json[attr] - attrValue) / (sv || 4);
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
//如果循环过程中存在尚未结束的运动,isAllCompleted为假
if (attrValue != json[attr]) isAllCompleted = false;
switch (attr) {
case 'opacity':
{
obj.style.filter = "alpha(opacity=" + (attrValue + speed) + ")";
obj.style.opacity = (attrValue + speed) / 100;
};
break;
default:
obj.style[attr] = attrValue + speed + 'px';
}
} //for in end!
//所有循环结束后,只有当全部运动结束后(isAllCompleted=true)时才关闭定时器
if (isAllCompleted) {
clearInterval(obj.timer);
if (fnEnd) fnEnd();
}
}, 30);
} //move() end !

来自 <http://www.tangbc.com/blog/#frontends/104>

最新文章

  1. 我们是怎么管理QQ群的
  2. Code First开发系列实战之使用EF搭建小型博客平台
  3. HTML标签marquee实现滚动效果
  4. ADO.NET基础巩固-----连接类和非连接类
  5. Storm集群的安装与测试
  6. mac下163企业邮箱客户端的配置
  7. POJ1651Multiplication Puzzle(区间DP)
  8. Android:什么是Holo?【Translated By KillerLegend】
  9. 【Passport】微软过时的技术
  10. 提取DLL类库代码
  11. 软件测试-nextDate问题
  12. linux awk命令详解2
  13. percona-toolkit安装
  14. 你不知道的JS(2)深入了解闭包
  15. js date setInterval 时间 时钟 getFullYear ,JavaScript
  16. js 对象的循环
  17. jenkines的工作区目录位置查找
  18. webpy 解决中文出现UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 问题
  19. day05 数据类型
  20. CRC16位校验

热门文章

  1. Nginx的一些基本功能极速入门
  2. spark1.2.0安装
  3. flume1.5.2安装与简介
  4. WinForm中DefWndProc、WndProc与IMessageFilter的区别
  5. 【Mood-5】14条建议,使你的IT职业生涯更上一层楼
  6. Oracle 经典语法(五)
  7. spring + Quartz定时任务配置
  8. 关于如何用sql语句查询出连续的一串数字
  9. 进程控制块的task_struct结构
  10. oracle-SQL语言基础-事务控制命令命令