Bonjour à tous, depuis peu je me suis mis au Javascript et aujourd'hui je rencontre un souci très gênant.
Voici le code qui me pose problème :
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
 
 
var Input = (function()
{
  function Input(canvasName)//take canvasName instead of canvas
  {
    this.__canvasName           = 0;
    this.__mousePosition        = 0;
    this.__mouseButtonLeftDown  = 0;
    this.__mouseButtonRightDown = 0;
    this.__mouseClick           = 0;
    this.__canvasName           = canvasName;
    this.__mousePosition        = new Vector2f(50,0);
    this.init();
  }
 
  Input.prototype.init = function()
  {
    console.log("INIT:" + this.__canvasName);
    document.getElementById(this.__canvasName).addEventListener('mousemove',this.update_mousePosition);
  }
 
  Input.prototype.update_mousePosition = function(event)
  {
    console.log("UPDATE:"+this.__canvasName);
 
    var rect = $('canvas')[0].getBoundingClientRect();
    this.__mousePosition = new Vector2f(event.clientX - rect.left ,event.clientY - rect.top);
  }
 
  Input.prototype.mousePosition = function()
  {
    return this.__mousePosition;
  }
 
 
 
  return Input;
}());
Input["__class"] = "Input";
Si je créer un nouvelle objet comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
var canvasName = 'canvas';
var input = new Input(canvasName); // or Object.create
Et que j’exécute mon code, alors la console m'écrit ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
INIT:canvas
UPDATE:undefined
J'ai l'impression que quand je fais this.__canvasName dans la fonction update_mousePosition, je fait référence à l'objet update_mousePosition et non l'objet Input.
Pourtant la fonction init elle, fonctionne. Je ne vois aucune différence entre les deux mise à part que l'autre fonction reçoit des event...

Merci de votre aide