Maison > interface Web > Tutoriel H5 > le corps du texte

Conseils pour améliorer les performances de HTML5 Canvas

黄舟
Libérer: 2017-03-03 16:16:17
original
1200 Les gens l'ont consulté

1 : Utiliser la technologie de mise en cache pour implémenter le pré-dessin et réduire le dessin répété du contenu Canvs

Souvent, lorsque nous dessinons et mettons à jour sur Canvas, nous en gardons toujours certains inchangés Contenu, pour lequel

doit être pré-dessiné dans le cache plutôt que actualisé à chaque fois.

Le code de dessin direct est le suivant :

context.font="24px Arial";
context.fillStyle="blue";
context.fillText("Please press <Esc> to exit game",5,50);
requestAnimationFrame(render);
Copier après la connexion

Utiliser la technologie de pré-dessin du cache :

function render(context) {
	context.drawImage(mText_canvas, 0, 0);
	requestAnimationFrame(render);
}

function drawText(context) {
	mText_canvas = document.createElement("canvas");
	mText_canvas.width = 450;
	mText_canvas.height = 54;
	var m_context = mText_canvas.getContext("2d");
	m_context.font="24px Arial";
	m_context.fillStyle="blue";
	m_context.fillText("Please press <Esc> to exit game",5,50);
}
Copier après la connexion

Lorsque vous utilisez la technologie de dessin de cache Canvas, n'oubliez pas de mettre en cache une taille d'objet Canvas inférieure à la taille réelle de la Toile

. Essayez de regrouper les opérations de dessin de points droits et essayez de terminer le dessin en une seule fois. Un mauvais code est le suivant :

for (var i = 0; i < points.length - 1; i++) {
	  var p1 = points[i];
	  var p2 = points[i+1];
	  context.beginPath();
	  context.moveTo(p1.x, p1.y);
	  context.lineTo(p2.x, p2.y);
	  context.stroke();
}
Copier après la connexion

Après. modification, les performances seront plus élevées Le code est le suivant :


context.beginPath();
for (var i = 0; i < points.length - 1; i++) {
  var p1 = points[i];
  var p2 = points[i+1];
  context.moveTo(p1.x, p1.y);
  context.lineTo(p2.x, p2.y);
}
context.stroke();
Copier après la connexion

Éviter les inutiles CanevasL'état du dessin change fréquemment. Un exemple de changement fréquent de style de dessin est le suivant :

var GAP = 10;
for(var i=0; i<10; i++) {
	context.fillStyle = (i % 2 ? "blue" : "red");
	context.fillRect(0, i * GAP, 400, GAP);
}
Copier après la connexion

<🎜. > évite les changements fréquents d'état de dessin et améliore les performances. Un bon code de dessin est le suivant :

// even
context.fillStyle = "red";
for (var i = 0; i < 5; i++) {
context.fillRect(0, (i*2) * GAP, 400, GAP);
}
			
// odd
context.fillStyle = "blue";
for (var i = 0; i < 5; i++) {
context.fillRect(0, (i*2+1) * GAP, 400, GAP);
}
Copier après la connexion

Lorsque vous dessinez, dessinez uniquement la zone qui doit être mise à jour et évitez les inutiles. dessin répété et frais généraux supplémentaires à tout moment.

Utilisez la technologie de dessin en couches pour dessiner des scènes complexes, divisées en premier plan et arrière-plan. Le HTML qui définit le calque Canvas est le suivant :

Si cela n'est pas nécessaire, essayez d'éviter d'utiliser des effets de dessin tels que les ombres, le flou, etc.

<canvas id="bg" width="640" height="480" style="position: absolute; z-index: 0">
</canvas>
<canvas id="fg" width="640" height="480" style="position: absolute; z-index: 1"></canvas>
Copier après la connexion

Évitez d'utiliser des coordonnées à virgule flottante.

Lors du dessin de graphiques, la longueur et les coordonnées doivent être sélectionnées sous forme d'entiers au lieu de nombres à virgule flottante, car Canvas prend en charge le dessin en demi-pixel

L'algorithme d'interpolation sera implémenté en fonction des décimales pour obtenir l'effet anti-aliasing de l'image dessinée. Veuillez ne pas sélectionner une valeur à virgule flottante si cela n'est pas nécessaire.


Effacer le contenu du dessin sur la toile :

context.clearRect(0, 0, canvas.width,canvas.height)

Mais en fait, il existe une méthode similaire dans Canvas

hack méthode de compensation : canvas.width = canvas.width;

également L'effet d'effacement du contenu sur le

canevas peut être obtenu, mais il peut ne pas être pris en charge sur certains navigateurs.

Ce qui précède est le contenu des techniques permettant d'améliorer les performances de HTML5 Canvas. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (. www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!