Ce qui suit sont trois paragraphes de code souligné. Lorsque j'entre en mode édition ; lorsque je clique sur le bouton gauche de la souris, la position correspondante du bouton gauche dans vcanvas a été enregistrée. Comment puis-je savoir si le point sur lequel j’ai cliqué se trouve sur le segment de ligne que j’ai dessiné ?
//Voici le code clé souligné
ctx.beginPath(); var x1=parseInt( (quxian[0].GLB-M_qishi)*(Wmax/M_glb)); //速度第一个点的值 var y1=parseInt(main_h-(main_h-space_h)/100*quxian[0].SPEED); var x2,y2; for(var i=1;i
Généralement, comme ceci, vous devez d'abord définir une plage sélectionnable pour le segment de ligne (x, y des quatre sommets), tout comme si vous écriviez un jeu.
Déterminez ensuite la plage de sélection de l'objet où se trouve la souris en obtenant les coordonnées de la souris dans le canevas. À ce stade, vous pouvez envisager d'utiliser le mode observateur pour implémenter la liaison d'événements.
Quant à l'algorithme permettant de déterminer si les coordonnées sont dans la plage, il peut être déterminé par la méthode des rayons (en tenant compte du fait que le segment de ligne peut être pivoté et mis à l'échelle).
Bien que je veuille vous aider, le code source que j'ai écrit a disparu après que j'ai cassé le disque dur de mon ordinateur il n'y a pas longtemps.
Permettez-moi d'écrire les idées de base pour vous :
1. Tout d'abord, définissez la plage en regardant l'exemple dans les commentaires. Une fois les quatre sommets définis, nous avons essentiellement une plage active. cela dépend de vos besoins personnels.
2. Le "mode observateur" (mode éditeur-abonné) peut être recherché en ligne pour le code de base. Il est en fait très facile à comprendre.
3. Quant à l'algorithme des coordonnées après rotation, cliquez ici (notez qu'il s'agit de la formule pour la rotation dans le sens inverse des aiguilles d'une montre) et appliquez-le simplement directement.
4. Pour la méthode des rayons, vous devrez peut-être utiliser des vecteurs pour calculer, veuillez vous rappeler vos mathématiques du lycée.
J'ai corrigé les liens pour vous, apprenez-les lentement d'abord. Cela semble ennuyeux, mais c'est en fait très simple une fois que vous l'avez compris.