Creo que hay una diferencia entre el comportamiento de CCLayer y CCNode cuando cambio su AnchorPoint.
Describiré lo que quiero decir y, por favor, que alguien lo explique.
Escenario:
comienzo 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)
Además del Posicionamiento , todas las acciones (como Rotar, Escalar ) se basan en este punto de anclaje.
Esta política es lo suficientemente justa y no se confundirá al mover un nodo escalado ( setScale(X)
) a alguna posición porque la posición del nodo (¡y no el contenido del nodo! ) No cambiará en la pantalla después de cualquier acción.
( PD: Sabíamos que girar / escalar un nodo rotará / escalará el contenido del nodo interno)
Continuemos 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).
Aunque CCLayer también usa el punto de anclaje para escalar, rotar y ... propósitos, ¡NO usa su punto de anclaje para posicionamiento!
Pregunta >>>> ¿POR QUÉ? y ¿Cómo puedo tener el mismo setPosition()
comportamiento similar a CCNode CCLayer
?
PD: También lo intenté ->ignoreAnchorPointForPosition(true)
pero no ayudó.
(La versión @ cocos2d-x es 2.2.3)