2012-10-15 57 views
1

This post討論了對CCSprite進行子類化或將CCSprite作爲成員的cons/pros。CCNode的位置

假設我有一個CCNode,它有一個CCSprite作爲成員。
然後我將CCNode作爲一個孩子添加到我的圖層 並將CCSprite添加到CCNode。

現在我想改變CCSprite的位置,我應該改變包含CCSprite或CCSprite本身的CCNode的位置嗎?

如果我改變了CCSprite的位置,CCNode的位置會發生什麼變化?

  • 編輯
    這是否被認爲是可以接受的做法?
    我最好設置CCNode的位置,並讓CCSprite定位在CCNode的哪個位置?

回答

0

你的精靈不會發生任何事情。如果您沒有將內容大小和定位點設置到您的精靈容器中,則節點的位置總是等於節點的位置(0.f,0.f)。所以,你的精靈的位置將與它的父級有關(0.f,0.f)

+0

節點的位置總是等於節點的位置(0.f,0.f)。 ?沒有得到它 – eugene

+0

任何節點內的所有定位都與它的相關(0.f,0.f)。如果你的節點有contentSize,那麼(0.f,0.f)將在它的左下角。如果你的容器節點沒有contentSize,你可以考慮0.f字體的寬度和高度。因此,這種情況下的「左下角」將等於它的位置。 – Morion

0

基本上,cocos2d-x中的所有節點都有一個父節點(場景除外)。

更改父節點的位置將應用的位置更改其所有子,

更改子節點的位置,不會影響任何東西,除非這個孩子節點都有自己的孩子。

在您的示例中,如果更改CCSprite位置,CCNode的位置將保持不變。但是,如果您更改了CCNode的位置,則Sprite將發生相同的更改(在屏幕上移動)。

2

當您想要與節點一起移動多個精靈時,將CCSprite添加爲CCNode的子節點會很有幫助。

考慮玩家精靈的例子。假設你想把一個影子放在玩家的下面。將陰影精靈和玩家精靈添加到父CCNode中可以使它們都輕鬆移動。

如果你有一個精靈沒有其他精靈想要隨它移動,那麼你不需要CCNode的父親。

0

你想設置精靈的位置。簡單的原因是節點可能包含其他應該能夠獨立於精靈移動的子節點。

更改節點的位置並不影響父節點的位置。同樣,改變父母的位置也不會改變子節點的位置。子節點位置是它們父級位置的偏移量,所以如果移動父級,它們將繼續,但是它們的位置屬性(與父級位置相關)保持不變。

0

您最好移動CCNode的位置,導致CCSprite的位置也受其父項的影響。 儘管通過移動CCSprite的位置,您將在視覺上獲得相同的結果(其父不會移動),但它使得獲取精靈的位置更加複雜和令人困惑。