Por que o AnchorPoint não afeta o posicionamento do `CCLayer`?

8

Eu acho que há uma diferença entre o comportamento do CCLayer e do CCNode quando eu mudo o AnchorPoint.

Descreverei o que quero dizer e, por favor, alguém o explique.

Cenário: eu começo comCCNode

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)

Além do Posicionamento , todas as ações (como Rotação, Escalonamento ) são baseadas neste ponto de ancoragem.

Essa política é justa o suficiente e você não ficará confuso ao mover um nó escalado ( setScale(X)) para alguma posição, porque a posição do (e não o conteúdo do nó! ) Não será alterada na tela após nenhuma ação.

( PS: sabíamos que girar / escalar um nó girará / escalará o conteúdo interno do nó)

Vamos continuar com 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).

Embora o CCLayer também use o ponto de ancoragem para fins de escala, rotação e ..., NÃO usa seu ponto de ancoragem para posicionamento !!!

Pergunta >>>> POR QUE? e Como posso ter o mesmo setPosition()comportamento semelhante ao CCNode CCLayer?


PS: Eu também tentei, ->ignoreAnchorPointForPosition(true)mas não ajudou.

(@ versão cocos2d-x é 2.2.3)

Emadpres
fonte

Respostas:

0

Você disse que tentou definir `ignoreAnchorPointForPosition (true), mas tentou defini-lo como false?

Chamadas do método init do CCLayer ignoreAnchorPointForPosition(true), que basicamente informa aos cocos que ignorem o ponto de ancoragem para o posicionamento. Você pode configurá-lo como falso e deve respeitar o ponto de ancoragem da posição.

aramusss
fonte