JavaScript中的匀速运动和变速(缓冲)运动详细介绍


Posted in Javascript onNovember 11, 2012

一个div的运动其实就是它与浏览器边框的距离在变动。如果他变化的速率一定,那就是匀速运动;如果变化的速率不一定,那么就是变速运动。当,变化率与聚离浏览器边框的距离成比例的话,那么就可以说是div在做缓冲运动。
其实,很简单,就是用一个定时器(timer),每隔一段时间来改变div聚浏览器边框的距离。

比如匀速运动:

进入定时器:(每隔30ms做)
if(是否到达终点)
{ 停止定时器}
else do{ 改变距离}

改变距离的方法决定是匀速还是变速(缓冲)运动。

匀速的比如:

var timer=null; 
function startMove() 
{ var oDiv=document.getElementById('div1'); 
clearInterval(timer); 
timer=setInterval(function () { 
var iSpeed=1; 
if(oDiv.offsetLeft>=300) 
{ 
clearInterval(timer); 
} 
else 
{ 
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px'; 
} 
},30); 
};

缓冲运动:

var timer=null; 
function startMove() 
{ 
var iTarget=300; 
var oDiv=document.getElementById('div1'); 
clearInterval(timer); 
timer=setInterval(function () { 
var iSpeed=(iTarget-oDiv.offsetLeft)/8; 
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); 
iSpeed=Math.ceil(iSpeed); 
if(oDiv.offsetLeft==iTarget) 
{ 
clearInterval(timer); 
} 
else 
{ 
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px'; 
} 
document.title=oDiv.style.left+' '+iSpeed; 
},30); 
};

这样,一个运动框架就写好了!原理很简单,不过还有待完善。慢慢来吧!
Javascript 相关文章推荐
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
js change,propertychange,input事件小议
Dec 20 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
利用Jquery实现可多选的下拉框
Feb 21 Javascript
Javascript中的delete操作符详细介绍
Jun 06 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
two.js之实现动画效果示例
Nov 06 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
js 将线性数据转为树形的示例代码
May 28 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 Javascript
jQuery语法总结和注意事项小结
Nov 11 #Javascript
javascript继承之为什么要继承
Nov 10 #Javascript
jquery表单验证使用插件formValidator
Nov 10 #Javascript
js 判断checkbox是否选中的操作方法
Nov 09 #Javascript
JS的replace方法详细介绍
Nov 09 #Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 #Javascript
javascript模拟select,jselect的方法实现
Nov 08 #Javascript
You might like
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
二招解决php乱码问题
2012/03/25 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP实现微信对账单处理
2018/10/01 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
JS typeof fn === 'function' && fn()详解
2020/08/22 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
python正则表达式re模块详细介绍
2014/05/29 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
写一个方法1000的阶乘
2012/11/21 面试题
婚礼证婚人证婚词
2014/01/08 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
2014离婚协议书范文
2014/09/10 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2014年团工作总结
2014/11/27 职场文书
办公室禁烟通知
2015/04/23 职场文书
git中cherry-pick命令的使用教程
2022/06/25 Servers