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 相关文章推荐
js综合应用实例简单的表格统计
Sep 03 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
JavaScript中Array的实用操作技巧分享
Sep 11 Javascript
JavaScript基于对象去除数组重复项的方法
Oct 09 Javascript
require、backbone等重构手机图片查看器
Nov 17 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
Jul 17 Javascript
Webpack中loader打包各种文件的方法实例
Sep 03 Javascript
js实现页面图片消除效果
Mar 24 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
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 图片上传类代码
2009/07/17 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python 字符串和整数的转换方法
2018/06/25 Python
Python实现中值滤波去噪方式
2019/12/18 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
2014年百日安全生产活动总结
2014/05/04 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
求职自荐信怎么写
2015/03/04 职场文书
信仰观后感
2015/06/03 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js