Почему AnchorPoint не влияет на позиционирование CCLayer?

8

Я думаю, что есть разница между поведением CCLayer и CCNode, когда я меняю их AnchorPoint.

Я опишу, что я имею в виду, и, пожалуйста, кто-нибудь объяснит.

Сценарий: я начинаю сCCNode

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)

Кроме позиционирование , все действия (например , поворот, масштабирование ) основаны на этой точке привязки.

Эта политика достаточно справедлива, и вы не запутаетесь при перемещении масштабированного узла ( setScale(X)) в какую-либо позицию, потому что позиция узлане содержимое узла! ) Не изменится на экране после каких-либо действий.

( PS: мы знали, что вращение / масштабирование узла будет вращать / масштабировать содержимое внутреннего узла)

Давайте продолжим с 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).

Хотя CCLayer также использует опорную точку для масштабирования, вращения и ... целей, он НЕ использует свою опорную точку для позиционирования !!!

Вопрос >>>> ПОЧЕМУ? и Как я могу иметь такое же setPosition()поведение, подобное CCNode CCLayer?


PS: я тоже пробовал, ->ignoreAnchorPointForPosition(true)но это не помогло.

(@ cocos2d-x версия 2.2.3)

Emadpres
источник

Ответы:

0

Вы говорите, что пытались установить значение ignoreAnchorPointForPosition (true), но пытались ли вы установить значение false?

Вызов метода инициализации CCLayer ignoreAnchorPointForPosition(true), который в основном говорит кокосам игнорировать опорную точку для позиционирования. Вы можете установить его в ложь, и он должен учитывать точку привязки для позиции.

aramusss
источник