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 相关文章推荐
js封装的textarea操作方法集合(兼容很好)
Nov 16 Javascript
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
通过上下左右键和回车键切换光标实现代码
Mar 08 Javascript
js日期、星座的级联显示代码
Jan 23 Javascript
老司机带你解读jQuery插件开发流程
May 16 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
微信小程序 网络API Websocket详解
Nov 09 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
Oct 11 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 Javascript
js实现复制粘贴的两种方法
Dec 04 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
django框架如何集成celery进行开发
2017/05/24 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python实现抖音点赞功能
2019/04/07 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python实现学生成绩测评系统
2020/06/22 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
个人简历的自荐信
2013/10/23 职场文书
颐和园英文导游词
2015/01/30 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
人民币使用说明书
2019/04/17 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis