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 相关文章推荐
贴一个在Mozilla中常用的Javascript代码
Jan 09 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
JS实现控制表格单元格垂直对齐的方法
Mar 30 Javascript
JavaScript电子时钟倒计时第二款
Jan 10 Javascript
JavaScript中的Number数字类型学习笔记
May 26 Javascript
jQuery Ajax 全局调用封装实例代码详解
Jun 02 Javascript
js实现右键自定义菜单
Dec 03 Javascript
Javascript实现倒计时时差效果
May 18 Javascript
Js自定义多选框效果的实例代码
Jul 05 Javascript
Angular CLI在Angular项目中如何使用scss详解
Apr 10 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
vue穿梭框实现上下移动
Jan 29 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
初学CAKEPHP 基础教程
2009/11/02 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
php面向对象重点知识分享
2019/09/27 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
接收键盘指令的脚本
2006/06/26 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python多进程编程技术实例分析
2014/09/16 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
pytorch梯度剪裁方式
2020/02/04 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
简单叙述一下MYSQL的优化
2016/05/09 面试题
机械专业毕业生推荐信范文
2013/11/25 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
市场营销专业自荐书
2014/06/10 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
大学生毕业个人总结
2015/02/15 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
孙振耀退休感言
2015/08/01 职场文书