2010-11-05 16 views
1

Je construis une application flash qui a des boutons déplaçables sur et je veux qu'ils se comportent comme ceci:Comment détecter un clic sur un glisser-objet tomber dans AS3

  • Vous cliquez dessus, ClickEvent1 arrive,
  • Vous cliquez et maintenez sur le bouton, vous pouvez le déplacer. Si vous relâchez de la prise, il ne déclenche pas la ClickEvent

Je suis en cours d'exécution dans le problème logique de ne pas savoir si un utilisateur est juste en cliquant ou à partir d'un événement de déplacement. Est-ce que quelqu'un connaît une logique pour contourner ce problème? J'ai pensé à des alternatives telles que placer des zones du bouton qui sont seulement déplaçables ou seulement cliquables, mais j'ai vu ce type de fonctionnalité dans d'autres applications flash et je me demande comment cela est accompli.

Répondre

2

Une autre approche pourrait être l'intervalle entre mousedown et mouseup - un glisser prendra plus de temps qu'un clic.

+0

Meilleure réponse que de vérifier si la souris a bougé. Un clic est rapide, un glisser est un événement plus long, certains utilisateurs peuvent ne pas être en mesure de cliquer sans se déplacer, en particulier les utilisateurs de tablettes ou d'écrans tactiles, ou les personnes avec des souris très rapides. – AttackingHobo

1

Parfois, les idées les plus évidentes ne trouvent que leur chemin dans mon cerveau dans la douche ...

j'ai réalisé la meilleure façon d'y arriver est tout en gardant la trace des coordonnées souris lorsque le MOUSE_DOWN est d'abord enregistré. Ensuite, lorsque l'événement MOUSE_UP se produit, vous vérifiez simplement si les coordonnées de la souris sont identiques ou si la position de la souris a changé. Si la souris n'a pas bougé, alors l'utilisateur clique sur l'objet, si la souris a bougé, alors vous savez que l'utilisateur a fait glisser l'objet afin qu'ils ne cliquent pas.

+0

Je pense que vous auriez besoin d'un degré de tolérance, car la souris peut avoir bougé légèrement même lorsque l'utilisateur clique. J'utilise une tablette et c'est vraiment difficile de ne pas bouger le curseur en cliquant. – hamishtaplin

+0

convenu. +/- quelques px. Je pense que votre solution d'intervalle de temps est une meilleure solution tout autour cependant :) – justinl