function xDHTML(NomBloc){ if( document.layers ){ this.xMontrer = 'show'; this.xCacher = 'hide'; this.xUnite = ''; }else{ this.xMontrer = 'visible'; this.xCacher = 'hidden'; this.xUnite = 'px'; } if( document.getElementById ){ this.xBloc = document.getElementById( NomBloc ); this.xStyle = this.xBloc.style; }else if( document.all ){ this.xBloc = document.all( NomBloc ); this.xStyle = this.xBloc.style; }else{ this.xBloc = this.xStyle = null; } return this; } //changer image xDHTML.prototype.changeImage = function(cheminImage){ var blocImg = this.xBloc.firstChild; //var cheminImageBloc = blocImg.getAttribute("src"); var cheminImageBloc = cheminImage; blocImg.setAttribute("src", cheminImageBloc); } //getter position xDHTML.prototype.getTop = function(){ return parseInt(this.xStyle.top); } xDHTML.prototype.getLeft = function(){ return parseInt(this.xStyle.left); } xDHTML.prototype.getDown = function(){ var Bas = parseInt(this.xStyle.top); Bas = Bas + parseInt(this.xStyle.height); return (Bas); } xDHTML.prototype.getRight = function(){ var Droite = parseInt(this.xStyle.left); Droite = Droite + parseInt(this.xStyle.width); return (Droite); } //hitTest xDHTML.prototype.HitTest = function ( blocCible ){ //recuperation du bloc cible xBlocCible = new xDHTML( blocCible ); //debut du hitTest if(this.getTop()>=xBlocCible.getDown()){ if(this.getRight() >= xBlocCible.getLeft() && this.getRight() <= xBlocCible.getRight()){ if(this.getTop()==xBlocCible.getDown()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getLeft() >= xBlocCible.getLeft() && this.getLeft() <= xBlocCible.getRight()){ if(this.getTop()==xBlocCible.getDown()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getLeft() <= xBlocCible.getLeft() && this.getRight() >= xBlocCible.getRight()){ if(this.getTop()==xBlocCible.getDown()){ return( 'true' ); }else{ return( 'false' ); } } } if(this.getDown()<=xBlocCible.getTop()){ if(this.getRight() >= xBlocCible.getLeft() && this.getRight() <= xBlocCible.getRight()){ if(this.getDown()==xBlocCible.getTop()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getLeft() >= xBlocCible.getLeft() && this.getLeft() <= xBlocCible.getRight()){ if(this.getDown()==xBlocCible.getTop()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getLeft() <= xBlocCible.getLeft() && this.getRight() >= xBlocCible.getRight()){ if(this.getDown()==xBlocCible.getTop()){ return( 'true' ); }else{ return( 'false' ); } } } if(this.getLeft()>=xBlocCible.getRight()){ if(this.getTop() <= xBlocCible.getDown() && this.getTop() >= xBlocCible.getTop()){ if(this.getLeft()==xBlocCible.getRight()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getDown() <= xBlocCible.getDown() && this.getDown() >= xBlocCible.getTop()){ if(this.getLeft()==xBlocCible.getRight()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getDown() >= xBlocCible.getDown() && this.getTop() <= xBlocCible.getTop()){ if(this.getLeft()==xBlocCible.getRight()){ return( 'true' ); }else{ return( 'false' ); } } } if(this.getRight()<=xBlocCible.getLeft()){ if(this.getTop() <= xBlocCible.getDown() && this.getTop() >= xBlocCible.getTop()){ if(this.getRight()==xBlocCible.getLeft()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getDown() <= xBlocCible.getDown() && this.getDown() >= xBlocCible.getTop()){ if(this.getRight()==xBlocCible.getLeft()){ return( 'true' ); }else{ return( 'false' ); } }else if(this.getDown() >= xBlocCible.getDown() && this.getTop() <= xBlocCible.getTop()){ if(this.getRight()==xBlocCible.getLeft()){ return( 'true' ); }else{ return( 'false' ); } } } return( 'false' ); } xDHTML.prototype.MoveTo = function( nX, nY ){ if( this.xStyle ){ this.xStyle.left = parseInt(nX) + this.xUnite; this.xStyle.top = parseInt(nY) + this.xUnite; } } xDHTML.prototype.MoveToElastic = function( nX, nY ){ //initialisation if( this.xStyle ){ this.posX = parseInt(this.xStyle.left); this.posY = parseInt(this.xStyle.top); } this.vit_x = 0; this.vit_y = 0; this.arriveX = 500; this.arriveY = 100; this.frottements = 0.8; this.cste_elastic = 0.3; this.itx = 0; this.maxItx = 200; //lancement de l'animation this.tempoMoveTo = null; this.AnimationMoveToElastic(); } xDHTML.prototype.AnimationMoveToElastic = function(){ if( this.xStyle ){ this.posX = parseInt(this.xStyle.left); this.posY = parseInt(this.xStyle.top); } //calcul de déplacement pour la prochaime position this.vit_x = this.vit_x * this.frottements + ( this.arriveX - this.posX )*this.cste_elastic ; this.vit_y = this.vit_y * this.frottements + ( this.arriveY - this.posY )*this.cste_elastic ; //lancement du deplacement this.MoveBy(this.vit_x,this.vit_y); //debut et arret de la boucle recursive if( this.posX >= (this.arriveX-1) && this.posX <= (this.arriveX+1) && this.posY >= (this.arriveY-1) && this.posY <= (this.arriveY+1) ){ clearTimeout(this.tempoMoveTo); this.tempoMoveTo = null; }else{ /********************************problèmes de cohérence dans le parseur Javascript //this.tempoMoveTo = setTimeout("this.AnimationMoveToElastic()",10); *********/ var self = this; this.tempoMoveTo = setTimeout(function(){self.AnimationMoveToElastic();}, 10) } } xDHTML.prototype.MoveBy = function ( nX, nY ){ if( this.xStyle ){ this.posX = parseInt(this.xStyle.left); this.posY = parseInt(this.xStyle.top); this.xStyle.left = this.posX + parseInt(nX) + this.xUnite; this.xStyle.top = this.posY + parseInt(nY) + this.xUnite; } }