Maison > Article > interface Web > Comment ajouter un gestionnaire d'événements onClick à un élément Canvas ?
Les éléments Canvas offrent un moyen polyvalent et efficace de dessiner et de manipuler des graphiques sur une page Web. Cependant, l'ajout de gestionnaires d'événements à des formes ou des éléments individuels dans un canevas peut s'avérer un défi. Ce guide fournira une solution complète pour attacher un gestionnaire d'événements onClick à un élément de canevas, vous permettant ainsi de détecter les clics sur des zones spécifiques du canevas.
Contrairement au HTML traditionnel éléments, les éléments de canevas n'ont pas d'éléments spécifiques avec lesquels il est possible d'interagir. Au lieu de cela, vous devez utiliser une approche différente pour capturer les événements de clic sur les formes dessinées sur le canevas.
Pour gérer les événements de clic sur un canevas, vous pouvez utiliser l'outil Méthode addEventListener :
canvas.addEventListener('click', function() { }, false);
Ce code attache un écouteur d'événement à l'élément canvas qui déclenche une fonction de rappel chaque fois qu'un clic se produit sur le toile.
Pour déterminer sur quelle forme ou sur quel élément le canevas a été cliqué, vous devez effectuer quelques calculs :
var elemLeft = elem.offsetLeft + elem.clientLeft; var elemTop = elem.offsetTop + elem.clientTop; var context = elem.getContext('2d');
Ces lignes calculez le décalage de l'élément de canevas dans la page et obtenez le contexte de dessin 2D.
Pour suivre la position et les dimensions de chaque élément dessiné sur le canevas, créez un tableau pour stocker les objets élément :
var elements = [];
Chaque objet élément doit inclure la couleur, la largeur et la hauteur de la forme. , le décalage supérieur et le décalage gauche.
Dans le rappel de l'événement de clic function :
elem.addEventListener('click', function(event) { var x = event.pageX - elemLeft; var y = event.pageY - elemTop; // Collision detection between clicked offset and element elements.forEach(function(element) { if (y > element.top && y < element.top + element.height && x > element.left && x < element.left + element.width) { alert('clicked an element'); } }); }, false);
Ce code récupère les coordonnées du clic et vérifie chaque élément du tableau elements pour déterminer si le clic s'est produit dans les limites de la forme. Si tel est le cas, cela déclenche une alerte.
Vos tentatives précédentes n'ont pas fonctionné car :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!