Penso che ci sia una differenza tra il comportamento CCLayer e CCNode quando cambio il loro AnchorPoint.
Descriverò cosa intendo e per favore qualcuno lo spiegherà.
Scenario:
inizio conCCNode
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)
Oltre al posizionamento , tutte le azioni (come Rotazione, Ridimensionamento ) si basano su questo punto di ancoraggio.
Questa politica è abbastanza corretta e non ti confonderai quando sposti un nodo ridimensionato ( setScale(X)
) in una posizione perché la posizione del nodo (e non il contenuto del nodo! ) Non cambierà nella schermata dopo alcuna azione.
( PS: sapevamo che ruotando / ridimensionando un nodo ruoterai / ridimensionerai il contenuto del nodo interno)
Continuiamo con 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).
Sebbene CCLayer utilizzi anche il punto di ancoraggio per scopi di ridimensionamento, rotazione e ..., NON utilizza il suo punto di ancoraggio per il posizionamento !!!
Domanda >>>> PERCHÉ? e come posso avere lo stesso setPosition()
comportamento simile a CCNode per CCLayer
?
PS: ho anche provato, ->ignoreAnchorPointForPosition(true)
ma non ha aiutato.
(La versione @ cocos2d-x è 2.2.3)