Javascript实现重力弹跳拖拽运动效果示例


Posted in Javascript onJune 28, 2013

演示地址:
http://www.ihuxu.com/project/gcdmove/

调用示例:
var GCDM = gcdMove(oDiv,100,0);
GCDM.startMove();//开始运动
GCDM.stopMove();//结束运动
该段JS代码已经封装好了,代码如下:
简要说明 - obj为要改动的对象元素,通常为某个div;iSpeedX,iSpeedY为div出师的横向(右侧),竖向(下)的初始速度,当然也可以设为零。

/** 
* @Desc 重力碰撞拖拽运动 - Gravity Crash Drag Move(gcdMove) 
* @Author GenialX 
* @URL www.ihuxu.com 
* @QQ 2252065614 
* @Date 2013.06.22 
*/ 
function gcdMove(obj, iSpeedX, iSpeedY) { 
_this = this;//public identifier 
//construct fun 
var gcdMove; 
//self defined fun 
var start; 
_this.startMove; 
//other var 
var iTimer; 
var iLastX = 0; 
var iLastY = 0; 
//construct fun 
start = function() { 
clearInterval(iTimer); 
iTimer = setInterval(function() { 
iSpeedY += 3; 
var l = obj.offsetLeft + iSpeedX; 
var t = obj.offsetTop + iSpeedY; 
if (t >= document.documentElement.clientHeight - obj.offsetHeight) { 
iSpeedY *= -0.8; 
iSpeedX *= 0.8; 
t = document.documentElement.clientHeight - obj.offsetHeight; 
} else if (t <= 0) { 
iSpeedY *= -1; 
iSpeedX *= 0.8; 
t = 0; 
} 
if (l >= document.documentElement.clientWidth - obj.offsetWidth) { 
iSpeedX *= -0.8; 
l = document.documentElement.clientWidth - obj.offsetWidth; 
} else if (l <= 0) { 
iSpeedX *= -0.8; 
l = 0; 
} 
if (Math.abs(iSpeedX) < 1) { 
iSpeedX = 0; 
} 
if (iSpeedX == 0 && iSpeedY == 0 && t == document.documentElement.clientHeight - obj.offsetHeight) { 
clearInterval(iTimer); 
} 
obj.style.left = l + 'px'; 
obj.style.top = t + 'px'; 
}, 30); 
} 
_this.startMove = function(){ 
obj.onmousedown = function(ev) { 
clearInterval(iTimer); 
var oEvent = ev || event; 
var disX = oEvent.clientX - obj.offsetLeft; 
var disY = oEvent.clientY - obj.offsetTop; 
document.onmousemove = function(ev) { 
var oEvent = ev || event; 
var l = oEvent.clientX - disX; 
var t = oEvent.clientY - disY; 
obj.style.left = l + 'px'; 
obj.style.top = t + 'px'; 
if(iLastX ==0){ 
iLastX = l; 
} 
if(iLastY == 0){ 
iLastY = t; 
} 
iSpeedX = l - iLastX; 
iSpeedY = t - iLastY; 
iLastX = l; 
iLastY = t; 
} 
} 
obj.onmouseup = function() { 
document.onmousedown = null; 
document.onmousemove = null; 
document.onmouseup = null; 
start(); 
} 
start(); 
} 
_this.stopMove = function(){ 
clearInterval(iTimer); 
obj.onmousedown = null; 
document.onmousemove = null; 
obj.onmouseup = null; 
iLastX = 0; 
iLastY = 0; 
iSpeedX = 0; 
iSpeedY = 0; 
disX = 0; 
disY = 0; 
} 
//CONSTRUCT AREA 
var gcdMove = function() { 
if (!iSpeedX) { 
iSpeedX = 0; 
} 
if (!iSpeedY) { 
iSpeedY = 0; 
} 
} 
gcdMove(); 
}
Javascript 相关文章推荐
Javascript 构造函数 实例分析
Nov 26 Javascript
JS实现div内部的文字或图片自动循环滚动代码
Apr 19 Javascript
使用jquery修改表单的提交地址基本思路
Jun 04 Javascript
JQuery实现表格动态增加行并对新行添加事件
Jul 30 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
Nov 29 Javascript
详解Angularjs filter过滤器
Feb 06 Javascript
JS操作COOKIE实现备忘记录的方法
Apr 01 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 Javascript
jQuery随便控制任意div隐藏的方法
Jun 28 #Javascript
js实时获取系统当前时间实例代码
Jun 28 #Javascript
js复制到剪切板的实例方法
Jun 28 #Javascript
Javascript无阻塞加载具体方式
Jun 28 #Javascript
Extjs4 类的定义和扩展实例
Jun 28 #Javascript
JavaScript和CSS通过expression实现Table居中显示
Jun 28 #Javascript
jquery异步跨域访问代码
Jun 28 #Javascript
You might like
一个显示天气预报的程序
2006/10/09 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
对Python3 序列解包详解
2019/02/16 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
python add_argument()用法解析
2020/01/29 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
Python更换pip源方法过程解析
2020/05/19 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
爱护环境卫生倡议书
2015/04/29 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js