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 相关文章推荐
破除一些网站复制、右键限制
Nov 04 Javascript
原生JS实现加入收藏夹的代码
Oct 24 Javascript
各种常用的JS函数整理
Oct 25 Javascript
jQuery学习笔记之2个小技巧
Jan 19 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
深入理解JavaScript编程中的原型概念
Jun 25 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
Angular实现跨域(搜索框的下拉列表)
Feb 16 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
Apr 17 jQuery
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
JS数组Reduce方法功能与用法实例详解
Apr 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获取图片信息的方法详解
2015/12/10 PHP
关于php中一些字符串总结
2016/05/05 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
javascript脚本调试方法小结
2008/11/24 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python中作用域的深入讲解
2018/12/10 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
浅析Python __name__ 是什么
2020/07/07 Python
Python远程方法调用实现过程解析
2020/07/28 Python
python Selenium 库的使用技巧
2020/10/16 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
总经理职责范文
2013/11/08 职场文书
教师求职推荐信范文
2013/11/20 职场文书
2014年纪委工作总结
2014/12/05 职场文书
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang