2009-12-23 4 views
0

Actuellement je suis en train de développer un jeu dans lequel j'ai une image que je redimensionne petit à petit & tournant à la fin. Je veux obtenir la taille de l'image & ses coordonnées sont la fin de la mise à l'échelle dont j'ai besoin pour la rotation 3D de l'imageView dont j'ai besoin pour redessiner l'image & appliquer une rotation à elle. J'utiliseComment obtenir la position et la taille d'une image après l'application d'une transformation?

if(ravanImage.center.y>=300&&ravanImage.center.y<=370) 
{ 
    ravanImage.transform = CGAffineTransformScale(ravanImage.transform, 0.98, 0.98);  
} 

if(ravanImage.center.y>=230&&ravanImage.center.y<=299) 
{ 
    ravanImage.transform = CGAffineTransformScale(ravanImage.transform, 0.98, 0.98); 
} 

if(ravanImage.center.y>=150&&ravanImage.center.y<=229) 
{ 
    ravanImage.transform = CGAffineTransformScale(ravanImage.transform, 0.98, 0.98); 
} 

mise à l'échelle image pendant trois intervalles de coordonnées. Chaque fois qu'il entre en boucle, il réduit sa taille. Cette animation est essentiellement pour une flèche que je veux montrer comme s'éloignant de nous à l'intérieur de l'écran. Je veux obtenir les dernières statistiques de l'image après la dernière échelle.

Quelqu'un peut-il m'aider s'il vous plaît?

Répondre

2

Vous pouvez le faire en extrayant la transformation finale et l'application de cette transformation à vos valeurs de vue d'origine:

CGPoint ravanImageOrigin = ravanImage.frame.origin; 
CGSize ravanImageSize = ravanImage.bounds.size; 

// Transforming code here 

CGAffineTransform currentTransform = ravanImage.transform; 
CGPoint newImageOrigin = CGPointApplyAffineTransform(ravanImageOrigin, currentTransform); 
CGSize newImageSize = CGSizeApplyAffineTransform(ravanImageSize, currentTransform); 

Une chose à surveiller est ici dans le traitement de la position. Les transformations pour une vue sont appliquées par rapport à son point central, par défaut, ce qui précède peut ne pas vous donner la bonne coordonnée de fin pour l'origine de la vue. Vous devrez peut-être soustraire des valeurs de sorte que l'origine se trouve dans les coordonnées relatives au centre de la vue, puis ajouter les coordonnées de la vue au centre après avoir appliqué la transformation.

+0

Merci beaucoup, Brad! Ça m'a aidé ... J'ai un doute à te demander. Vous avez raison de dire qu'il y aura une différence dans la position actuelle et celle obtenue. Non seulement cela, je suis confronté au même problème en cas de sa taille aussi! Dans mon cas, je veux que cette flèche soit d'abord mise à l'échelle puis à la fin tournée. En tournant, je veux le redessiner. Dans mon jeu, l'intensité avec laquelle la corde d'arc est tendue, la flèche ira plus loin. Donc, je veux que la flèche suive son chemin en fonction de l'intensité et de la direction de l'étirement de façon dynamique. Donc, y a-t-il une formule ou des statistiques pour gérer ces différences? – neha

+0

la distance du centre de la corde sera plus loin que l'intensité augmente, donc ajustez la vitesse de la flèche w t t cela, c'est à dire le retard b/w eaah redessiner doit être changé avec les mêmes positions. – Nithin

Questions connexes