2013-07-14 5 views
2

J'ai trouvé ce code pour dessiner sur une toile. Dans Firefox, cela fonctionne bien mais dans la dernière version de Chrome, les performances sont insuffisantes. Si la souris est déplacée très rapidement la ligne tracée derrière le curseur dans Chrome. Pourquoi?HTML5 Toile plus rapide sur Firefox que sur Chrome! Pourquoi?

js fiddle canvas

var canvas = document.getElementById('canvas'); 
    var ctx = canvas.getContext('2d'); 
    var width = window.innerWidth; 
    var height = window.innerHeight; 
    canvas.height = height; 
    canvas.width = width; 
    canvas.addEventListener('mousedown', function(e) { 
     this.down = true; 
     this.X = e.pageX ; 
     this.Y = e.pageY ; 
     this.color = rgb(); 
    }, 0); 
    canvas.addEventListener('mouseup', function() { 
     this.down = false;   
    }, 0); 
    canvas.addEventListener('mousemove', function(e) { 

     if(this.down) { 
      with(ctx) { 
       beginPath(); 
       moveTo(this.X, this.Y); 
       lineTo(e.pageX , e.pageY); 
       strokeStyle = "rgb(0,0,0)"; 
       ctx.lineWidth=3; 
       stroke(); 
      } 
      this.X = e.pageX ; 
      this.Y = e.pageY ; 
     } 
    }, 0); 
+0

Je ne semble pas avoir les mêmes problèmes que vous. Peut-être que la force de votre PC a à voir avec cela? – Thew

+0

mais si mon PC doit être lent, pourquoi est-ce qu'il fonctionne dans Firefox? – user2580777

+0

Fonctionne bien pour moi sur le dernier Chrome. – SeinopSys

Répondre

0

La vitesse d'exécution javascript est différent dans chaque navigateur, il peut fonctionner mieux dans Firefox pour vous. Cela dépend également des performances de votre propre PC. L'instruction with ralentit également l'exécution. Ceci est dû au fait que() ajoute un ensemble supplémentaire de variables au début de la chaîne de portée décrite ci-dessus. Cet item supplémentaire signifie qu'à chaque fois qu'une variable est appelée, le moteur Javascript doit parcourir les variables with(), puis les variables locales, puis les variables globales. Donc, avec() donne essentiellement aux variables locales tous les inconvénients des performances des variables globales, et dégrade à son tour l'optimisation Javascript.

Ce pourquoi ne pas utiliser with explication vient de here

+0

merci pour le conseil mais cela ne change pas la performance. Je veux développer pour le chrome alors que puis-je faire? celui-ci fonctionne bien dans les deux: [sumo paint] (http://www.sumopaint.com/app/) – user2580777

+0

@Dennis Désolé, je voulais dire après avoir corrigé cet exemple de code, la performance était encore mauvaise – user2580777

+0

Cette peinture de sumo est codé en flash, ce qui est généralement plus rapide pour ce genre de choses. –

Questions connexes