2010-04-01 9 views
1

Comme le titre l'indique, j'ai besoin d'une notification lorsque le contenu d'un élément de canevas a été redessiné. Est-ce possible? Si ce n'est pas le cas, une notification lorsque la page entière a été redessinée serait également OK (READRAY non reLOADED!).Y a-t-il un événement redraw pour l'élément canvas de HTML5?

La raison pour laquelle j'ai besoin de ceci est que je veux que le FPS courant d'une animation s'exécute dans un canevas.

Répondre

2

Le canevas lui-même n'a pas de méthode ou d'événement de "redessiner". L'architecture est telle qu'à tout moment, n'importe quelle fonction peut dessiner dans le contexte. Cependant, une solution possible consisterait à "outrepasser" les fonctions spécifiques qui marquent le dessin d'une nouvelle image. Spécifiquement, je pense que surenchérir context.clearRect serait le chemin à parcourir. Le seul problème avec cette méthode est qu'elle suppose que clearRect est appelé exactement une fois par trame. Cependant, tant que c'est le cas, alors le code ci-dessus fonctionnera.

+0

Ensuite, j'ai un problème. Je suis assez sûr que je dessine plus que je rectangle par image :-( J'ai testé qu'en utilisant votre méthode ci-dessus, ce qui a donné lieu à un framerate incroyablement élevé de STH. Comme 80000+ FPS. Utilisation du MozAfterPaint -évènement de Firefox, j'ai été en mesure d'obtenir le véritable framerate, qui était entre 9 et 10 FPS: https://developer.mozilla.org/en/Gecko-Specific_DOM_Events#MozAfterPaint Est-ce que quelqu'un sait si un événement similaire à MozAfterPaint existe-t-il dans d'autres navigateurs comme Webkit? Ou peut-être que quelqu'un a une bonne idée pour résoudre mon problème? – Timo