2011-12-21 102 views
0

我的應用中有些東西很奇怪。我必須無數次地看過這條線,我發誓我沒有看到任何錯誤。點擊一個按鈕,這個代碼就會被執行,而精靈A應該位於精靈B的頂部。(Cocos2D)雪碧不是完全坐在其他雪碧的頂部?

不,我不能只做setPosition,因爲精靈A會跟精靈B一起移動在動畫的頂部。

因此,在這裏發生的是,精靈A最終成爲像精靈B頂部30像素太高。我不知道這是爲什麼。 這是我的代碼做到這一點:

spriteA.position = ccp(cgpoint.x , spriteB.position.y + spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2); 

所以會發生什麼這裏是我的設置精靈A的X位置的CGPoint不涉及到這個問題,但我把我的Y位置到當前位置spriteB在,然後我加上spriteB的高度的一半來說明錨點問題,最後,我添加了spriteA的一半高度,以便它在動畫期間應該完全位於spriteB之上。

是否有任何理由不按照我的要求工作?

謝謝!

回答

1

您使用boundingBox的一個精靈和contentSize其他:

spriteB.boundingBox.size.height/2 + spriteA.contentSize.height/2 

是您spriteA任何縮小機會?

+0

是的,這是我的問題!不能相信我以前沒有看到! :) – 2011-12-21 12:29:21

1

如果你想設置B精靈的頂部,你應該照顧精靈的z順序。如果A具有更多的z值,則A和B具有相同的位置和錨點時,A將是B的頂部。

您可以設置Z值當您添加的孩子,就像這樣:

[self addChild:spriteA z:1 tag:<tagValue int>]; 
[self addChild:spriteB z:0 tag:<tagValue int>]; 
+0

Z值不是問題。它與精靈的定位有關。它應該*看起來*像精靈B位於精靈A頂部。 – 2011-12-21 05:23:39

+0

您是否正在B精靈上運行一些操作..如果是,請在定位前停止它。 – Haroon 2011-12-21 05:51:52