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 相关文章推荐
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
node.js 一个简单的页面输出实现代码
Mar 07 Javascript
jquery ajax请求实例深入解析
Nov 26 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
Javascript 实现全屏滚动实例代码
Dec 31 Javascript
vue.js获取数据库数据实例代码
May 26 Javascript
angularJS模态框$modal实例代码
May 27 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
基于VUE的v-charts的曲线显示功能
Oct 01 Javascript
详解Vue之事件处理
Jul 10 Javascript
微信小程序实现倒计时功能
Nov 19 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 中执行排序与 MySQL 中排序
2009/04/21 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
JavaScript 指导方针
2007/04/05 Javascript
JS backgroundImage控制
2009/05/19 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
jQuery实现统计复选框选中数量
2014/11/24 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
python爬虫增加访问量的方法
2019/08/22 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
python3 re返回形式总结
2020/11/20 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
创业计划书的主要内容有哪些
2014/01/29 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
中国梦演讲稿范文
2014/08/28 职场文书