2010-10-04 11 views
1

Je rencontre des problèmes de compréhension et d'utilisation de anchorPoint. Si je comprends bien, l'ancre par défaut est (.5, .5) qui applique des transformations sur le centre des objets. Cependant, quand je mis un UIButton dans un CCUIViewWrapper, je remarque que l'échelle il échelle sur le côté droit de l'objet (à savoir si je mis à l'échelle de 0 à 1, il passerait de droite à gauche). Je ne savais pas trop quoi en faire, mais avec le bricolage, j'ai trouvé que je devais ajuster le point d'ancrage à (0,0) pour que le scaling se fasse autour du centre de l'objet. Pourquoi cela arriverait-il?Problèmes d'ancrage avec CCUIViewWrapper

De plus, alors que je pense que pour faire l'ancre soit le fond gauche de l'objet car Cocos2d est orienté en bas à gauche pour (0,0), il n'a pas et en fait aligné le haut gauche la valeur de position de mon wrapper. Finalement, ce qui a fonctionné à l'échelle du centre était de faire le point d'ancrage (0,0) et de positionner l'emballage en utilisant le haut à gauche de l'objet, presque comme s'il utilisait les coordonnées UIView pour placer le objet. Je ne suis pas certain si ce comportement est quelque chose se produisant strictement avec UIViews enveloppé dans CCUIViewWrappers et je ne sais pas si c'est simplement un comportement correct et je suis complètement mal compris.

Quelqu'un peut-il clarifier et d'expliquer?

Répondre

1

J'ai eu un problème similaire avec l'emballage. L'un des problèmes ici est que le wrapper attache la vue à la fenêtre racine au lieu de la vue OpenGL du directeur, ce qui signifie qu'il ne respectera pas l'autorotation utilisée par la vue OpenGL. Le code semble essayer de compenser la différence entre les coordonnées UIView et Cocos2d, mais ne semble pas le faire correctement quand il s'agit de points d'ancrage. J'ai fini juste en utilisant les coordonnées UIView à la fin mais je n'expérimente avec une autre méthode de réglage du point d'ancrage à l'aide:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height); 

Au début de la méthode updateUIViewTransform dans CCUIViewWrappers avant de transformer de la vue. Cela fait que les points d'ancrage se comportent comme prévu, au moins pour les vues attachées directement à une couche.

0

Au lieu d'utiliser:

uiItem.center = ccp((self.anchorPoint.x - 0.5f) * self.contentSize.width, (self.anchorPoint.y - 0.5f) * self.contentSize.height); 

qui a fixé le point d'ancrage à droite en bas, j'utilisé:

uiItem.center = ccp(-uiItem.bounds.size.height/2, uiItem.bounds.size.width/2); 

dont il réglé au centre.

La raison pour laquelle x et y sont retournés, je suppose que c'est parce que mon article est tourné de 90.