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 触发HTML元素绑定的函数
Sep 11 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
关于JavaScript语句后面的分号问题
Dec 07 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
微信小程序公用参数与公用方法用法示例
Jan 09 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 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
PHP ajax 分页类代码
2008/11/13 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
django 环境变量配置过程详解
2019/08/06 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
python中常用的数据结构介绍
2021/01/12 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
js实现弹框效果
2021/03/24 Javascript
学生个人求职自荐信格式
2013/09/23 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
2015年教师节慰问信
2015/03/23 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
企业愿景口号
2015/12/25 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python