J'ai un élément de canevas et lorsque je clique dessus, j'obtiens la position de clic avec e.clientX (Y) ou e.screenX (Y). Quelque chose d'étrange se passe. La valeur Y est toujours trop élevée. Veuillez regarder cette image: http://img840.imageshack.us/img840/268/eventq.jpg. Toute idée pourquoi est-ce si haut?La position de l'événement de clic (Y) est trop élevée
Répondre
Je suis assez sûr que vous pouvez dire ce qui se passe. Vous n'avez pas les coordonnées par rapport à votre toile, mais par rapport à votre fenêtre. Cela dépend aussi de votre navigateur s'il inclut ou non un remplissage.
Convertissez-les en coordonnées normales. Dans votre cas, cela implique de soustraire le décalage de la toile.
offsetX ne fonctionne pas dans Firefox 3.6 – thomas
désolé, ne pas utiliser offsetX, j'ai édité le post – buddhabrot
Vous avez juste besoin de prendre le ClientX et Y et soustraire la position de la toile d'eux.
Cet exemple est inutilement bavard, juste pour montrer les étapes:
var canvas = document.getElementById('game');
var canvasX, canvasY;
canvas.addEventListener('click', function(event) {
canvasX = canvas.offsetLeft;
canvasY = canvas.offsetTop;
var eventX = event.clientX;
var eventY = event.clientY;
var relX = eventX - canvasX;
var relY = eventY - canvasY;
alert('X = ' + relX + ', Y = ' + relY);
});
échantillon de travail: http://jsfiddle.net/JfhJF/
- 1. Voir la position est trop élevée
- 2. La hauteur de la boîte de dialogue jQueryUI est trop élevée
- 3. C# DataGrid Clic Position
- 4. erreur SQL: ORA-12899: valeur trop élevée pour la colonne
- 5. Position différente de fond chaque clic
- 6. Comment est-il possible d'obtenir la position de la souris lors d'un clic dans un contrôle?
- 7. Obtenir la position d'un clic de souris dans un QLabel
- 8. Animer la position de l'arrière-plan à chaque clic
- 9. Trop de couches d'indirection, est-ce trop?
- 10. Commencez processus non élevée de processus élevée
- 11. SIG, projection Mercator, calculer la position Y
- 12. Obtenir la position x et y?
- 13. VSTO: Obtenir la position du curseur de texte (X/Y)
- 14. Une idée de pourquoi la position X, Y de cet élément est 0,0?
- 15. Position x et y de la tabulation Flex
- 16. iPhone: Quelle est l'utilisation de la mémoire est trop?
- 17. Raison de l'utilisation élevée de la mémoire dans Android MapView
- 18. Combien de NSTimers est trop?
- 19. Modification d'un texte Div à la position du clic
- 20. est-il possible d'ajuster la position x, y titleLabel de UIButton?
- 21. Détection si la position de la souris est dans un ensemble de règles de position?
- 22. Problème de position de la souris Javascript
- 23. Envoyer un clic de souris à une position spécifique sans déplacer la souris
- 24. Changement de position de fond CSS sur l'axe Y seulement
- 25. Bitmap.SetPixel (x, y, Color) trop lent
- 26. mysql - combien de colonnes est trop?
- 27. Y at-il un moyen de différencier entre un clic JavaScript et un clic réel de l'utilisateur
- 28. Comment savoir quand il y a trop de connexions SQL?
- 29. HTML: La taille de la police est trop grande - pourquoi?
- 30. Utilisation élevée de l'UC - VB.NET
est l'élément de la première toile/élément en haut de la page? La capture d'écran ne nous laisse pas voir le haut de la page. ClientY n'est pas relatif à l'élément en cours, mais à la page (fenêtre d'affichage) elle-même. – Fosco
Non il y a des textes ... Y a-t-il un moyen de l'obtenir par rapport à l'élément canvas? – thomas