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 相关文章推荐
jQuery实现的导航条切换可显示隐藏
Oct 22 Javascript
PageSwitch插件实现100种不同图片切换效果
Jul 28 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
React进阶学习之组件的解耦之道
Aug 07 Javascript
Vue动态组件实例解析
Aug 20 Javascript
关于Vue组件库开发详析
Jul 01 Javascript
angular1.x ui-route传参的三种写法小结
Aug 31 Javascript
详解vue 在移动端体验上的优化解决方案
May 20 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
vue打包npm run build时候界面报错的解决
Aug 13 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 set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
Cython 三分钟入门教程
2009/09/17 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python整数对象实现原理详解
2019/07/01 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
工厂厂长岗位职责
2013/11/08 职场文书
50岁生日感言
2014/01/23 职场文书
一月红领巾广播稿
2014/02/11 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS