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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
Jun 23 Javascript
js的一些常用方法小结
Jun 29 Javascript
checkbox设置复选框的只读效果不让用户勾选
Aug 12 Javascript
javascript正则表达式中的replace方法详解
Apr 20 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
原生JS实现不断变化的标签
May 22 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
vue组件内部引入外部js文件的方法
Jan 18 Javascript
vue实现页面切换滑动效果
Jun 29 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的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
jquery分页对象使用示例
2014/04/01 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
.net面试题
2015/12/22 面试题
主题酒店策划书
2014/01/28 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
平安工地建设方案
2014/05/06 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
职位证明模板
2015/06/23 职场文书