基于jquery的3d效果实现代码

2020-05-19 07:43:43易采站长站整理

this.vx= parseInt(secne.css(‘width’)==’auto’?secne.width():secne.css(‘width’))/2;
this.vy= parseInt(secne.css(‘height’)==’auto’?secne.height():secne.css(‘height’))/2;
this.fl=o.fl||250;
this.box=new box(o).z(0);
this._set3d();
return this;
}
box3d.prototype.x=function(x){
if(x==undefined)
return this._x||0;
this._x=x||0;
this._set3d();
return this;
}
box3d.prototype.y=function(y){
if(y==undefined)
return this._y||0;
this._y=y||0;
this._set3d();
return this;
}
box3d.prototype.z=function(z){
if(z==undefined)
return this._z||0;
this._z=z||0;
this._set3d();
return this;
}
box3d.prototype._set3d=function(){
var boxo=this.box;
var fl=this.fl;
var zomx=fl/(fl+this.z());
var x=this.vx+zomx*this.x();
var y=this.vy+zomx*this.y();
boxo.zoomw(zomx).zoomh(zomx);
boxo.x(x);
boxo.y(y);
}

//
function slide(o){
var d=$.extend({},{
‘z’:100,
‘secne’:null
},o);
if(d.secne==null||!$(d.secne))return;
this.cecne=d.secne;
this.z=d.z;
this.sleep=0.02;
var k={‘secne’:d.secne,’w’:80,’h’:50,fl:1000};
this.box=[];
var c=8;
for(var i=0;i<c;i++){
var t= parseInt(i-c/2);
var a=$(‘<div></div>’).css({
width:’100%’,
height:’100%’,
background:’#777′
})
k.data=a;
var ubox=new box3d(k).z(300);
this.r(ubox,t/2);
this.box.push(ubox);
}
this.re_index();
}
slide.prototype._moveaction=function(){
var _this=this;
var s=this.sleep;
for(var i=0;i<this.box.length;i++){
this.r(this.box[i],s);
}
this.re_index();
}
slide.prototype.r=function(rbox,s){
if(!(rbox instanceof box3d))
return;
var X=rbox.x();
var Y=rbox.y()
var Z=rbox.z();
var New_X = X*Math.cos(s) – Z*Math.sin(s);
var New_Z = X*Math.sin(s) + Z*Math.cos(s);
var New_Y = Y;
rbox.x(New_X);
rbox.y(New_Y);
rbox.z(New_Z);
}
slide.prototype.re_index=function(){
var arr=this.box;
var s=arr.length;
for(var j=0;j<s-1;j++){
for(var i=0;i<s-j-1;i++){
if(arr[i].z()<arr[i+1].z()){
var c=arr[i];
arr[i]=arr[i+1];
arr[i+1]=c;
}
}
}
for(var i=0;i<arr.length;i++){
arr[i].box.z(i)
}
}
slide.prototype.start=function(){
this.run=1;
this._move();
}
slide.prototype.stop=function(){
this.run=0;
}
slide.prototype._move=function(s){
var _this=this;
setTimeout(function(){
if(!_this.run){
return;
}
_this._moveaction();
_this._move();
},50)
}
Sl.slide=slide;
})()
$(function(){
var s=new Sl.slide({secne:’.s_c’});
$(‘#start’).click(function(){s.start()})
$(‘#stop’).click(function(){s.stop()})