2009-05-21 5 views
1

J'essaie de comprendre comment vous pouvez faire glisser une image tout en contraignant son mouvement le long d'un certain chemin.iphone cacao: comment faire glisser une image le long d'un chemin

J'ai essayé plusieurs astuces, y compris l'animation le long d'un chemin, mais je n'ai pas réussi à faire jouer l'animation et à la mettre en pause et à la lire à l'envers, ce qui semble hors de question.

Des idées? n'importe qui ?

+0

Hey..did vous tout compris comment le faire .. –

+0

Hey avez-vous pensé à elle s'il vous plaît aidez-moi j'ai le même problème que vous avez. –

Répondre

3

Ce que vous essayez essentiellement de faire est de faire correspondre le mouvement du doigt à une transition de «translation». Lorsque l'utilisateur touche et commence à déplacer son doigt, vous voulez utiliser la valeur actuelle du point de contact pour créer une transformation de traduction que vous appliquez à votre UIImageView. Voici comment vous le feriez:

  1. Au toucher, sauvegardez la position x, y de départ de l'image.

  2. Lors du déplacement, calculez le delta de l'ancien point au nouveau. C'est ici que vous pouvez fixer les valeurs. Ainsi, vous pouvez ignorer, par exemple, le changement et n'utiliser que les deltas x. Cela signifie que l'image ne bougera que de gauche à droite. Si vous ignorez le x et utilisez y, alors il ne fait que monter et descendre. Une fois que vous avez les «nouvelles» valeurs x et y calculées, utilisez-le pour créer une nouvelle transformation en utilisant CGAffineTransformMakeTranslation (x, y). Affectez cette transformation à UIImageView. L'image se déplace vers cet endroit. Une fois le doigt levé, déterminez le delta à partir du point de départ x, y et du point de départ original, puis ajustez les limites d'ImageView et réinitialisez la transformation à CGAffineTransformIdentity. Cela ne déplace pas l'objet, mais il le définit de sorte que les accès suivants à ImageView utilisent la position réelle et ne doivent pas continuer à ajuster pour les transformations.

Se déplacer sur une grille est également facile. Complétez simplement les valeurs x, y à l'étape 2 pour qu'elles correspondent à un multiple de la taille de la grille (c'est-à-dire arrondissent tous les 10 pixels) avant de la transmettre pour que la traduction se transforme.

Si vous souhaitez rendre le tout plus fluide, entourez le code où vous affectez la transition avec les blocs d'animation UIView. Mess autour avec les paramètres d'accélération et de synchronisation. L'image devrait glisser derrière un peu, mais en douceur "élastique" d'un point de contact à l'autre.

+0

Yup, ça sonne bien, même si vous voudrez peut-être simplement définir 'position' au lieu de jouer avec la transformation. –

Questions connexes