2010-10-04 47 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.