Je n'ai pas le code exact pour vous, mais je pourrais être en mesure de vous orienter dans la bonne direction en vous aidant à réfléchir un peu plus au problème.
L'utilisateur commence alors à faire glisser un objet non contraint. Pendant que l'objet se déplace d'un pixel à une distance à partir du point de départ, si le premier pixel est à l'une de ces quatre (x, y) coordonne, où x et y sont le point de départ: (x -1, y -1), (x -1, y 1), (x 1, y -1) ou (x -1, y 1), on ne sait toujours pas dans quel sens l'utilisateur veut aller, par exemple, je Si l'objet est en bas et à gauche, il est impossible de dire si la contrainte doit être sur l'axe x ou y.
Une fois que vous avez déplacé plus d'un pixel, cela devient plus facile. Mais vous devez encore arrondir les coordonnées du pixel où, comme dans les coordonnées ci-dessus, abs (xoffset) == abs (yoffset), alors vous pouvez déclencher un événement pour appliquer la contrainte lorsque x et/ou la distance y est supérieure à un petit entier arbitraire, disons "3".
Le prochain problème à résoudre est de savoir à quelle distance du dernier tir de la contrainte d'axe voulez-vous permettre à l'utilisateur de changer l'axe. Je suppose que vous voulez un effet de grille, donc vous devrez définir un seuil déplacé en nombre de pixels avant de supprimer la contrainte et de chercher la prochaine "direction" que l'utilisateur veut faire glisser.
C'est un défi intéressant et une bonne expérience d'apprentissage si vous savez comment le faire.
Si vous pouvez faire glisser un objet vers la gauche ou vers la droite, et de haut en bas ... ne pouvez-vous pas le faire glisser en diagonale? ou parlez-vous de la "position de départ" seulement? IE, si vous commencez à 0,0 et vous passez à un point au-delà de 0, -3 ... vous êtes soudainement contraint à la verticale seulement? – snicker
Oui, c'est exactement ce que je veux réaliser. –
Eh bien, j'ai écrit le code pour le faire correctement, et JQuery ne vous permettra tout simplement pas de changer l'axe pendant qu'il est traîné. – snicker