IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Classe de Zoom


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Classe de Zoom
    Bonjour,
    Tout d'abord salut à tous les membres de ce forum et merci de m'aider pour mon premier post !
    j'ai écrit une petite classe pour agrandir/réduire une image, mais j'éprouve quelques problèmes de performances:
    lors de mouseover/mouseout successifs et rapides sur une image, elle finit toujours par se bloquer à sa taille maximale...
    voici la classe zoom.js :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    function Zoom(img,finalRatio){
    	this.image = img;
    	this.ratio = finalRatio;
    	this.origWidth;
    	this.origHeight;
    	this.finalWidth;
    	this.finalHeight;
    	this.zoomInInt;
    	this.zoomOutInt;
    	var _this = this;
    	this.image.onload = function(){
    		this.style.cursor = "pointer";
    		_this.origWidth = this.width;
    		_this.origHeight = this.height;
    		_this.finalWidth =  _this.origWidth / _this.ratio;
    		_this.finalHeight =  _this.origHeight / _this.ratio;
    		this.width = _this.finalWidth;
    		this.height = _this.finalHeight;
    	}
    	this.image.onmouseover = function(){
    		_this.zoomInInt = window.setInterval(function(){_this.zoomIn();},30);
    	}
    	this.image.onmouseout = function(){
    		_this.zoomOutInt = window.setInterval(function(){_this.zoomOut();},30);
    	}
    }
    Zoom.prototype.zoomIn = function(){
    	clearInterval(this.zoomOutInt);
    	var distW = this.origWidth - this.image.width;
    	var distH = this.origHeight - this.image.height;
    	this.image.width += distW / 2;
    	this.image.height += distH / 2;
    	if(distW <= 10){
    		this.image.width = this.origWidth;
    		this.image.height = this.origHeight;
    		clearInterval(this.zoomInInt);
    	}
    }
    Zoom.prototype.zoomOut = function(){
    	clearInterval(this.zoomInInt);
    	var distW = this.image.width - this.finalWidth;
    	var distH = this.image.height - this.finalHeight;
    	this.image.width -= distW / 2;
    	this.image.height -= distH / 2;
    	if(distW <= 10){
    		this.image.width = this.finalWidth;
    		this.image.height = this.finalHeight;
    		clearInterval(this.zoomOutInt);
    	}
    }
    et l'instanciation dans la page html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script src="zoom.js" type="text/javascript"></script>
    <!-- les images -->
    <img src="image1.jpg" name="image1"/>
    <img src="image2.jpg" name="image2"/>
    <!-- le script -->
    <script type="text/javascript">
        for (i=1; i < nbImages; i++){
            window["zoom"+i] = new Zoom(document["image"+i],2);
        }
    </script>
    PS: le BBcode ne reconnait pas le js dans du html...

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    8 lectures en trois jours...
    Ca interresse donc personne ?

Discussions similaires

  1. [AC-2000] Classe Gdi+ - zoom/déplacement sur image
    Par fbtsra dans le forum Access
    Réponses: 4
    Dernier message: 13/09/2011, 11h26
  2. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  3. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  4. Zoom avec du TJPEG
    Par Thylia dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2002, 16h03
  5. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo