48 votes

requestAnimationFrame avec ce mot-clé

J'utilise webkitRequestAnimationFrame mais j'ai du mal à l'utiliser à l'intérieur d'un objet. Si je passe le this mot-clé qu'il utilisera window et je ne trouve pas de moyen pour qu'il utilise l'objet spécifié à la place.

Exemple :

Display.prototype.draw = function(){
  this.cxt.clearRect(0, 0, this.canvas.width, this.canvas.height);
  //Animation stuff here.

  window.webkitRequestAnimationFrame(this.draw);
};

J'ai également essayé, mais sans succès :

Display.prototype.draw = function(){
  this.cxt.clearRect(0, 0, this.canvas.width, this.canvas.height);
  //Animation stuff here.

  var draw = this.draw;
  window.webkitRequestAnimationFrame(draw);
};

1voto

MortezaE Points 338

A côté de bind et la solution de la fonction flèche (proposée par la réponse de Jamaes World), une autre solution (plutôt ancienne) pourrait être utilisée :

var self = this
window.webkitRequestAnimationFrame(
    function() {
        self.draw()
    }
);

-2voto

Oleg Slobodskoi Points 31

Vous pouvez également utiliser la cale requestAnimationFrame pour qu'elle fonctionne sur tous les navigateurs. https://github.com/kof/animation-frame

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X