js实现运动logo图片效果及运动元素对象sportBox使用方法

初始化(元素id, 元素移动的方向用123456789分别表示左上、上、右上、左、中、右、左下、下、右下。

撞击位置,9个数字分别表示9个地点,按顺序左上角、上、右上角、左、中、右、左下角、下、右下角,5居中。

运动的logo

/****************************************************************
* name:运动的元素对象sportBox
* DATA --2012-12-20-- 美工
*****************************************************************
*/
var sportBox = function() {}
sportBox.prototype = {
//初始化(元素id, 元素移动的方向用123456789分别表示左上、上、右上、左、中、右、左下、下、右下)
init: function(id, direction) {
var obj = this._getId(id), dir = direction || 9; //用1-9代表九个方向,5表示居中停止
obj.style.position = "absolute";
obj.timer = null;

this._sportDirection(obj, dir);
var _this = this;
obj.onmouseover = function() {
clearInterval(obj.timer);
};
obj.onmouseout = function() {
_this._sportDirection(obj);
};
},
_getId: function(id) {
return typeof id === "string" ? document.getElementById(id) : id;
},
//撞击的边界(返回新的运动方向)
_hitBorder: function(obj, direction) {
var d = direction || 9,b = obj,db = document.body || document.documentElement, h = 5,
hitsite = 5; //撞击位置,9个数字分别表示9个地点,按顺序左上角、上、右上角、左、中、右、左下角、下、右下角,5居中

if (b.offsetLeft = db.clientHeight) && (hitsite = 7);
} else if (b.offsetLeft > 0 && b.offsetLeft+b.offsetWidth = db.clientHeight) && (hitsite = 8)
} else if (b.offsetLeft +b.offsetWidth >= db.clientWidth) {
hitsite = 6;
(b.offsetTop = db.clientHeight) && (hitsite = 9);
}

switch(hitsite) {
case 1:
b.style.left = 0+'px';
b.style.top = 0+'px';
(d ==1) && (h = 9);
(d ==2) && (h = 8);
(d ==8) && (h = 2);
break;
case 2:
b.style.top = 0+'px';
(d ==3) && (h = 9);
(d ==2) && (h = 8);
(d ==1) && (h = 7);
break;
case 3:
b.style.left = db.clientWidth-b.offsetWidth+'px';
b.style.top = 0+'px';
(d ==3) && (h = 9);
(d ==2) && (h = 8);
(d ==8) && (h = 2);
break;
case 4:
b.style.left = 0+'px';
(d ==7) && (h = 9);
(d ==4) && (h = 6);
(d ==1) && (h = 3);
break;
case 5://
h = 5;
break;
case 6:
b.style.left = db.clientWidth-b.offsetWidth+'px';
(d ==9) && (h = 7);
(d ==6) && (h = 4);
(d ==3) && (h = 1);
break;
case 7:
b.style.left = 0+'px';
b.style.top = db.clientHeight-b.offsetHeight+'px';
(d ==7) && (h = 9);
(d ==2) && (h = 8);
(d ==8) && (h = 2);
break;
case 8:
b.style.top = db.clientHeight-b.offsetHeight+'px';
(d ==9) && (h = 3);
(d ==7) && (h = 1);
(d ==8) && (h = 2);
break;
case 9:
b.style.left = db.clientWidth-b.offsetWidth+'px';
b.style.top = db.clientHeight-b.offsetHeight+'px';
(d ==8) && (h = 2);
(d ==6) && (h = 4);
(d ==9) && (h = 1);
break;
}
this._sportDirection(b, h);
},
//运动方向(运动方向)
_sportDirection: function(obj, direction) {
var db = document.body || document.documentElement, mX = 0, mY = 0, _this = this, h = direction || (Math.round(Math.random()) ? 9 : 7);
switch(h) {
case 1:
mX = -5;
mY = -5;
break;
case 2:
mX = 0;
mY = -5;
break;
case 3:
mX = 5;
mY = -5;
break;
case 6:
mX = 5;
mY = 0;
break;
case 9:
mX = 5;
mY = 5;
break;
case 8:
mX = 0;
mY = 5;
break;
case 7:
mX = -5;
mY = 5;
break;
case 5:
mX = 0;
mY = 0;
break;
case 4:
mX = -5;
mY = 0;
break;
default:
//alert("你输入的方向不对,只允许1-9,5表停止");
}
obj.timer = setInterval(function() {
if (obj.offsetLeft db.clientWidth || obj.offsetHeight+obj.offsetTop > db.clientHeight) {
clearInterval(obj.timer);
_this._hitBorder(obj, h);
} else {
obj.style.left = obj.offsetLeft + mX +'px';
obj.style.top = obj.offsetTop + mY +'px';
}
},10);
}
}

/* 创建一个调用的实例 */
var s = new sportBox();
s.init('box', 4); //参数表示元素id和方向(方向缺默向右下)
s.init('box2');

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 原生javascript实现匀速运动动画效果

    本文向大家介绍一个javascript实现的动画.点击开始按钮div会往右移动,点击停止后,div停止移动,再点击则继续移动.请看下面代码: <html> <head> <meta charset="gb2312"> <head> <title>javascript实现的简单动画</title> <style type="text/css"> #mydiv { width:50px;

  • JavaScript中的匀速运动和变速(缓冲)运动详细介绍

    一个div的运动其实就是它与浏览器边框的距离在变动.如果他变化的速率一定,那就是匀速运动:如果变化的速率不一定,那么就是变速运动.当,变化率与聚离浏览器边框的距离成比例的话,那么就可以说是div在做缓冲运动. 其实,很简单,就是用一个定时器(timer),每隔一段时间来改变div聚浏览器边框的距离. 比如匀速运动: 进入定时器:(每隔30ms做) if(是否到达终点) { 停止定时器} else do{ 改变距离} 改变距离的方法决定是匀速还是变速(缓冲)运动. 匀速的比如: 复制代码 代码如下

  • js运动事件函数详解

    本文实例为大家分享了js运动事件函数,供大家参考,具体内容如下 HTML <div id="breedsdog"> <h2 class="title">The Dog</h2> <p class="describe">Split between cat,belong to the cat family,cat,cat,is the world's more widely<br> in t

  • js运动应用实例解析

    本文为大家提供了两个js运动应用实例,分享给大家,具体实现内容如下 应用1,完成如下效果: js代码如下: <script src="move.js"></script> <script> window.onload=function () { var oDiv=document.getElementById('play'); var aBtn=oDiv.getElementsByTagName('ol')[0].getElementsByTagNa

  • JS实现匀速运动的代码实例

    效果: 思路: 利用setInerval()计时器,进行运动.然后关键的一点是在最后停止的时候给它一个填充缝隙的判断. 代码: 复制代码 代码如下: <head runat="server">    <title></title>    <style type="text/css">        #div1        {            width: 100px;            height: 10

  • 用JavaScript玩转游戏物理(一)运动学模拟与粒子系统

    系列简介 也许,三百年前的艾萨克·牛顿爵士(Sir Issac Newton, 1643-1727)并没幻想过,物理学广泛地应用在今天许多游戏.动画中.为什么在这些应用中要使用物理学?笔者认为,自我们出生以来,一直感受着物理世界的规律,意识到物体在这世界是如何"正常移动",例如射球时球为抛物线(自旋的球可能会做成弧线球) .石子系在一根线的末端会以固定频率摆动等等.要让游戏或动画中的物体有真实感,其移动方式就要符合我们对"正常移动"的预期. 今天的游戏动画应用了多种

  • js运动动画的八个知识点

    今天简单的学了一下js运动动画,记录一下自己的心得体会,分享给大家. 下面是我整理出来的结果. 知识点一:速度动画. 1.首先第一步实现速度运动动画,封装一个函数,用到的知识是setInterval(function(){ 复制代码 代码如下: oDiv.style.left=oDiv.offsetLeft+10+"px"; },30). 对于这里为什么要用到offsetLeft,我特意百度了一下,我得到的有用信息是: a.offsetLeft和left的相同之处都是表示子节点相对于父

  • js运动框架_包括图片的淡入淡出效果

    复制代码 代码如下: <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><font face="Verdana, Geneva, sans-serif"></font>&l

  • javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)

    平时工作中写网页涉及的运动往往都非常简单,比如改变宽高,透明度,位置,是最常用的几种形式,为了省事,整合了下,于是就有了下面这个东东: 兼容:IE系列.chrome.firefox.opera.Safari.360 /* javascript简易运动 Move.action(dom对象,json格式属性值对,缓动参考值,回调方法) 示例: var box = document.getElementById('Ele'); Move.action(box,{width:500,height:200

  • 浅析JS运动

    物体运动原理:通过改变物体的位置,而发生移动变化. 任何运动都是相对的,就像物理中的运动公式:s(要达到的)=s0(当前的样式值)+vt. 方法:       1.运动的物体使用绝对定位       2.通过改变定位物体的属性(left.right.top.bottom)值来使物体移动.例如向右或左移动可以使用offsetLeft(offsetRight)来控制左右移动. 步骤:     1.开始运动前,先清除已有定时器 (因为:是连续点击按钮,物体会运动越来越快,造成运动混乱)     2.开

随机推荐