Saya pikir ada perbedaan antara perilaku CCLayer dan CCNode ketika saya mengubah AnchorPoint mereka.
Saya akan menjelaskan apa yang saya maksud dan tolong seseorang menjelaskannya.
Skenario:
Saya mulai denganCCNode
CCNode *node = ...;
node.setContentSize(ccp(W,H));
// 1.
node.setAnchorPoint(ccp(0,0));
node.setPosition(ccp(X,Y); // This line will move the node in a way that its (0,0)-point will be placed at (X,Y).
// 2.
node.setAnchorPoint(ccp(1,1));
node.setPosition(ccp(X,Y); // This line will move the node in a way that its (0,0)-point will be placeed at (X-W,Y-H).
//In other word, this line will move the (W,H)-point of the node to (X,Y)
Selain Pemosisian , semua tindakan (seperti Rotating, Scaling ) didasarkan pada titik jangkar ini.
Kebijakan ini cukup adil dan Anda tidak akan bingung ketika memindahkan node yang diskalakan ( setScale(X)
) ke beberapa posisi karena posisi node (dan bukan konten node! ) Tidak akan berubah di layar setelah tindakan apa pun.
( PS: Kami tahu bahwa memutar / menskalakan suatu simpul akan memutar / menskalakan isi simpul internal)
Mari kita lanjutkan dengan CCLayer
:
CCLayer *layer= ...;
layer.setContentSize(ccp(W,H));
// 1.
layer.setAnchorPoint(ccp(0,0));
layer.setPosition(ccp(X,Y); // This line will move the layer in a way that its (0,0)-point will be placed at (X,Y)
// 2.
layer.setAnchorPoint(ccp(1,1));
layer.setPosition(ccp(X,Y); // Unfortunately, This line will move the layer in a way that its (0,0)-point will be placeed at (X,Y).
Meskipun CCLayer juga menggunakan titik jangkar untuk tujuan penskalaan, rotasi, dan ..., JANGAN menggunakan titik jangkar untuk memposisikan !!!
Pertanyaan >>>> MENGAPA? dan Bagaimana saya bisa memiliki setPosition()
perilaku yang sama seperti CCNode CCLayer
?
PS: Saya juga sudah mencoba ->ignoreAnchorPointForPosition(true)
tetapi tidak membantu.
(@ cocos2d-x versi 2.2.3)
sumber