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 相关文章推荐
JavaScript与函数式编程解释
Apr 27 Javascript
wordpress之js库集合研究介绍
Aug 17 Javascript
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 Javascript
javascript如何使用bind指定接收者
May 04 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
详解ES6 系列之异步处理实战
Oct 26 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
前端面试知识点目录一览
Apr 15 Javascript
vue使用过滤器格式化日期
Jan 20 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
玩转虚拟域名◎+ .
2006/10/09 PHP
php类
2006/11/27 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP文件操作方法汇总
2015/07/01 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
Python寻找路径和查找文件路径的示例
2019/07/10 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
python实现对变位词的判断方法
2020/04/05 Python
Python如何合并多个字典或映射
2020/07/24 Python
python爬取微博评论的实例讲解
2021/01/15 Python
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
超市国庆节促销方案
2014/02/20 职场文书
开工典礼策划方案
2014/05/23 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
赢在中国观后感
2015/06/02 职场文书
区域销售大会开幕词
2016/03/04 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫