/********************************************************************************
|
Function: ptLimitFloat.js
|
Description:
|
限定范围的随机飘浮
|
Author:
|
guye
|
Finish DateTime:
|
2021-6-8 10:58:30
|
*********************************************************************************/
|
|
|
/*
|
限定范围的随机漂浮的例子
|
<div id="container"></div>
|
<div id="Div2">
|
***** content ******
|
</div>
|
var ad=new AdMoveLimit("Div2","#container");
|
ad.Run();
|
*/
|
|
var AdMoveLimitConfig=new Object();
|
AdMoveLimitConfig.IsInitialized=false;
|
AdMoveLimitConfig.MoveWidth=0;
|
AdMoveLimitConfig.MoveHeight=0;
|
AdMoveLimitConfig.ScrollX=0;
|
AdMoveLimitConfig.ScrollY=0;
|
AdMoveLimitConfig.Resize=function(obj){
|
var $obj=$(obj);
|
AdMoveLimitConfig.MoveWidth=$obj.width();
|
AdMoveLimitConfig.MoveHeight=$obj.height();
|
|
}
|
function AdMoveLimit(id,container){
|
if(!AdMoveLimitConfig.IsInitialized){
|
AdMoveLimitConfig.Resize(container);
|
AdMoveLimitConfig.IsInitialized=true;
|
}
|
|
var obj=document.getElementById(id);
|
obj.style.position="absolute";
|
var W=AdMoveLimitConfig.MoveWidth-obj.offsetWidth;
|
var H=AdMoveLimitConfig.MoveHeight-obj.offsetHeight;
|
var x = W*Math.random(),y = H*Math.random();
|
var rad=(Math.random()+1)*Math.PI/6;
|
var kx=Math.sin(rad),ky=Math.cos(rad);
|
var dirx = (Math.random()<0.5?1:-1), diry = (Math.random()<0.5?1:-1);
|
var step = 1;
|
var interval;
|
this.SetLocation=function(vx,vy){x=vx;y=vy;}
|
this.SetDirection=function(vx,vy){dirx=vx;diry=vy;}
|
obj.CustomMethod=function(){
|
obj.style.left = (x + AdMoveLimitConfig.ScrollX) + "px";
|
obj.style.top = (y + AdMoveLimitConfig.ScrollY) + "px";
|
rad=(Math.random()+1)*Math.PI/6;
|
W=AdMoveLimitConfig.MoveWidth-obj.offsetWidth;
|
H=AdMoveLimitConfig.MoveHeight-obj.offsetHeight;
|
x = x + step*kx*dirx;
|
if (x < 0){dirx = 1;x = 0;kx=Math.sin(rad);ky=Math.cos(rad);}
|
if (x > W){dirx = -1;x = W;kx=Math.sin(rad);ky=Math.cos(rad);}
|
y = y + step*ky*diry;
|
if (y < 0){diry = 1;y = 0;kx=Math.sin(rad);ky=Math.cos(rad);}
|
if (y > H){diry = -1;y = H;kx=Math.sin(rad);ky=Math.cos(rad);}
|
}
|
this.Run=function(){
|
var delay = 10;
|
interval=setInterval(obj.CustomMethod,delay);
|
// obj.onmouseover=function(){clearInterval(interval);}
|
// obj.onmouseout=function(){interval=setInterval(obj.CustomMethod, delay);}
|
}
|
}
|
|
|
|