Partage
  • Partager sur Facebook
  • Partager sur Twitter

Coordonnées de la souris en variables globales ?

    21 avril 2018 à 12:07:26

    Bonjour !

    Alors voilà, je souhaite récupérer les coordonnées de la souris par une fonction. J'ai celle là qui fonctionne bien mais je n'arrive pas à récupérer les coordonnées en dehors de cette même fonction. Le "console.log(mouse.x);" par exemple m'affiche 0 (coordonnée de base de mouse.x). Comment m'y prendre pour pouvoir accéder à ces valeurs en dehors de la fonction ?

    Merci à l'avance pour votre aide.

    	var canvas = document.getElementById("mon_canvas");
    	canvas.width = 5000; 
    	canvas.height = 1000; 
    	var c = document.getElementById( "mon_canvas" );
    	var ctx = c.getContext("2d");
    
    
    	
    	var mouse = {x: 0, y: 0};
    	
    	ctx.canvas.onmousemove = 
      	function(evt) {
       	mouse.x = evt.clientX;
        	mouse.y = evt.clientY;
      	};
    
    console.log(mouse.x);



    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2018 à 12:38:22

      Bonjour,

      Ton script est bien fonctionnel, la valeur de mouse.x est bien changé mais le console.log(mouse.x) n'est interprété qu'une seule fois au chargement de la page donc au moment d'interpréter ce console.log, la valeur de mouse.x est bien à 0.

      Pour visualiser la nouvelle valeur régulièrement tu peux faire 

       setInterval(function(){ 
      	console.log(mouse.x);
        }, 500);
      

      Ce n'est pas une bonne chose de le faire avec un setInterval, l'idée c'est que lors d'un event, tu dis explicitement "Quand il se passe ça, je veux que tu m'affiches ça"

      • Partager sur Facebook
      • Partager sur Twitter
      « Un ordinateur sécurisé est un ordinateur entreposé dans un hangar et débranché  ».Ramy Badir.
        21 avril 2018 à 13:03:17

        Bonjour Eromus,

        Merci de ton aide, en effet en faisant le setInterval je me suis rendu compte du changement de mouse.x. Cependant, lorsque je souhaite utiliser cette même valeur, par exemple ici, pour dessiner une boule de coordonnées (mouse.x, mouse.y) cela ne fonctionne pas. La boule reste en (0,0).

        	var canvas = document.getElementById("mon_canvas");
        	canvas.width = 5000; 
        	canvas.height = 1000; 
        	var timeStep= 500;
        	var c = document.getElementById( "mon_canvas" );
        	var ctx = c.getContext("2d");
        
        
        
        	function boule(x, y, radius, color){
        
        		this.x=x;
        		this.y=y;
        		this.radius=radius;
        		this.color=color;
        
        		this.draw= function(){
        		ctx.beginPath();
        		ctx.arc(x, y, radius, 0, Math.PI*2, true);
        		ctx.closePath();
        		ctx.fillStyle = color;
        		ctx.fill();
        		return {x, y, radius, color};
        		}
        
        	}
        	var mouse = {x: 0, y: 0};
        	
        	ctx.canvas.onmousemove = 
          	function(evt) {
           	mouse.x = evt.clientX;
            	mouse.y = evt.clientY;
          	};
        
            var joueur= new boule(mouse.x,mouse.y,20,"black");
            joueur.draw();
        



        • Partager sur Facebook
        • Partager sur Twitter
          22 avril 2018 à 12:32:08

          C'est la même problématique, il n'y a pas d'event qui appel boule().  

          Donc en faisant ça tu appels une fois boule au chargement de la page. Il faut que tu places les deux dernières lignes dans le onmousemove comme ceci : 

          var canvas = document.getElementById("mon_canvas");
          canvas.width = 5000;
          canvas.height = 1000;
          var timeStep= 500;
          var c = document.getElementById( "mon_canvas" );
          var ctx = c.getContext("2d");
           
           
           
          function boule(x, y, radius, color){
           
              this.x=x;
              this.y=y;
              this.radius=radius;
              this.color=color;
           
              this.draw= function(){
              ctx.beginPath();
              ctx.arc(x, y, radius, 0, Math.PI*2, true);
              ctx.closePath();
              ctx.fillStyle = color;
              ctx.fill();
              return {x, y, radius, color};
              }
           
          }
          var mouse = {x: 0, y: 0};
           
          ctx.canvas.onmousemove =
          function(evt) {
          mouse.x = evt.clientX;
              mouse.y = evt.clientY;
          var joueur= new boule(mouse.x,mouse.y,20,"black");
          
          joueur.draw();
          };
           



          • Partager sur Facebook
          • Partager sur Twitter
          « Un ordinateur sécurisé est un ordinateur entreposé dans un hangar et débranché  ».Ramy Badir.

          Coordonnées de la souris en variables globales ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown