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 :

syntaxe de classe javascript


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut syntaxe de classe javascript
    Bonjour,

    Je cherche à 'dessiner' un cadre dans une image.

    Le code que j'utilise actuellement pose deux problèmes :

    - si je déplace la souris avec le bouton en position basse, l'icone "interdit" apparait : pourquoi ???????

    - aucun cadre noir ne se forme lorsque je soulève le bouton de la souris.

    Voici le code :
    Code : 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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    <html> 
    		<head> 
    		<!--*********************************************-->
    <!--    Permettre le dessin d'un rectangle       -->
    <!--*********************************************-->
    <script language="JavaScript" type="text/JavaScript"> 
    function Draw(c){
     
    	var startPos=new Array();
    	var endPos=new Array();
    	var container=null;
    	construct(c);
     
    	function construct(c)
    	{
    		container=(typeof c=="undefined")?getDefaultContainer():c;
     
    	}
     
    	function getDefaultContainer()
    	{
    		var temp=document.createElement("div");
    		document.body.appendChild(temp);
    		return temp;
    	}
     
    	function SourisDown(evt)
    	{
     
    		var e = null;
    		var newX=0;
    		var newY=0;
     
    		// IE
    		if(document.all)
    		{
    			e = window.event;
    			newX = e.x;
    			newY = e.y;
    		}
    		// Mozilla
    		else
    		{
    			e = evt;
    			newX = e.clientX;
    			newY = e.clientY;
    		}
    		startPos[0]=newX;
    		startPos[1]= newY;
     
    	}
     
    	function SourisUp(evt)
    	{
    		fix_start=false;
    		var e = null;
    		var newX=0;
    		var newY=0;
     
    		// IE
    		if(document.all)
    		{
    			e = window.event;
    			newX = e.x;
    			newY = e.y;
    		}
    		// Mozilla
    		else
    		{
    			e = evt;
    			newX = e.clientX;
    			newY = e.clientY;
    		}
    		endPos[0]=newX;
    		endPos[1]= newY;
    		alert(startPos+" - "+endPos);
    	}
     
     
    	Draw.prototype.clear = function (){
    		container.innerHTML='';
    	}
     
     
    Draw.prototype.line=function (x1,y1,x2,y2,t,c) {
          if (typeof t=="undefined") {t=1;}
          if (x1==x2) {x2+=t;} // add thickness
          if (y1==y2) {y2+=t;} // add thickness
          var div=document.createElement("div");
          div.style.position="absolute";
          div.style.width= Math.abs(x1-x2)+"px";
          div.style.height=Math.abs(y1-y2)+"px";
          div.style.left=x1+"px";
          div.style.top =y1+"px";
          div.style.backgroundColor=(typeof c=="undefined"?"#000000":c);
          div.style.cursor="pointer";
          container.appendChild(div);
       }
     
     
      Draw.prototype.rectangle=function (x,y,w,h,c) {
    	line(x,y,x+w,y+h,1,c);
       }
       		container.onmouseup=SourisUp;
    		container.onmousedown=SourisDown;
     
    }
     
     
    </script> 
    <!--*********************************************-->
    <!--        Fin du dessin d'un rectangle         -->
    <!--*********************************************-->
     
    </head> 
     
    <body>
    <div id="e">
    <img src='rectangle/test.jpg' name='obj' id='obj' width='700' height='560' border='1'/>	
    </div>
    <script language="JavaScript" type="text/JavaScript"> 
    var dessin = new Draw(document.getElementById("e"));
    </script>
    </body> 
    </html>
    Toutes aides acceptées

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut
    Bon,
    j'ai déjà une première réponse qui n'explique rien mais bon ...

    L'icone interdit apparait sur l'image lorsque la souris se déplace avec le bouton gauche enfoncé. Pour palier à ce problème, on fait apparaitre l'image dans un div avec background-image:url(fichier de l'image) et cela n'apparait plus.

    Pourquoi? toujours pas de réponses, mais je ne desespère pas

    Quant au second problème relatif à la gestion des évènements dans ce type de classe, je ne sais toujours pas !

    Très certainement un souci de syntaxe mais où?????

    Les remarques sont toujours très appréciées !
    merci

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    pourquoi déclarer tes fonctions ... à l'intérieur d'une fonction ?

    Tu as essayer de manière un peu moins originale ?

    Et en déclarant en globale les variables devant être utilisées dans plusieurs fonctions ?

    A+

  4. #4
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    pourquoi déclarer tes fonctions ... à l'intérieur d'une fonction ?
    Tu fais référence aux fonctions prototype ? C'est vrai j'aurai du les sortir.

    Et en déclarant en globale les variables devant être utilisées dans plusieurs fonctions ?
    startPos et endPos sont utilisé dans divers fonctions (SourisUp, SourisMove, SourisDown), donc il me les faut en globale, non?

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par bastien Voir le message
    Tu fais référence aux fonctions prototype ?
    Non, car il s'agit de fonctions anonymes, ce qui ne pose pas de problème.

    Mais là, par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function Draw(c){
     
    	var startPos=new Array();
    	var endPos=new Array();
    	var container=null;
    	construct(c);
     
    	function construct(c)
    	{
    ...


    A+

  6. #6
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut
    function Draw(c){

    var startPos=new Array();
    var endPos=new Array();
    var container=null;
    construct(c);

    function construct(c)
    {
    ...
    doit être changé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Draw(c){
     
    	this.startPos=new Array();
    	this.endPos=new Array();
    	this.container=null;
     
    	this.construct=function(c)
    	{
    ...
    Mais comment forcer l'éxécution de la méthode construct() 'automatiquement' à l'appel de new Draw ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 01/04/2011, 20h58
  2. classe javascript et ie sur onclick
    Par The_Pretender dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/10/2007, 23h04
  3. [AJAX] Soap Ajax classe javascript
    Par sekaijin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2006, 08h50

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