2010-10-04 62 views
1

我有一些问题的理解和使用anchorPoint。据我了解,默认锚点是(.5,.5),它应用关于对象中心的变换。但是,当我将一个UIButton放入一个CCUIViewWrapper时,我注意到缩放它将会缩放对象的一侧(即如果我从0缩放到1,它会从右向左增长)。与CCUIViewWrapper锚点问题

我不知道该怎么做,但修改发现,我不得不调整锚点为(0,0),以使缩放发生在物体的中心附近。为什么会发生?

更进一步,而我希望,使锚是底部左边的对象,因为cocos2d的是面向为(0,0)左下角,它并没有在实际上对准顶部留下我的包装的位置值。

最后,对中心进行缩放的工作是制作锚点(0,0)并使用对象的左上角定位包装,就好像它使用UIView坐标来放置目的。我不确定这种行为是否严重发生在CCUIViewWrappers中的包装UIViews上,也不知道这是否仅仅是正确的行为,我完全误解了它。

有人可以澄清和解释?

回答

1

我有一个包装类似的问题。这里的问题之一是包装器将视图附加到根窗口而不是导演的OpenGL视图,这意味着它不会尊重OpenGL视图使用的任何自动旋转。这段代码看起来像是试图弥补UIView和Cocos2d坐标之间的差异,但是当涉及到锚点时,似乎并没有做到这一点。最后我只是使用的UIView到底坐标,但是我没有用实验来设置锚点的另一种方法:设置视图的变换前

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

在updateUIViewTransform方法开始在CCUIViewWrappers。这使得锚点的行为与预期一致,至少对于直接连接到图层的视图。

0

代替使用:

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

其中设置的锚点到右下,我使用:

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

它设定为中心。

x和y翻转的原因,我猜这是因为我的物品旋转了90.