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 相关文章推荐
JScript中的&quot;this&quot;关键字使用方式补充材料
Mar 08 Javascript
JavaScript表单常用验证集合
Jan 16 Javascript
javascript json2 使用方法
Mar 16 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
在JavaScript中使用JSON数据
Feb 15 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
bootstrapvalidator之API学习教程
Jun 29 Javascript
最全的JavaScript开发工具列表 总有一款适合你
Jun 29 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
vue 打包后的文件部署到express服务器上的方法
Aug 09 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 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
php mysql索引问题
2008/06/07 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
解读ES6中class关键字
2017/11/20 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
浅谈django channels 路由误导
2020/05/28 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
办理信用卡工作证明
2014/01/11 职场文书
销售助理岗位职责
2014/02/21 职场文书
预防传染病方案
2014/06/14 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android