AnchorPointを変更すると、CCLayerとCCNodeの動作に違いがあると思います。
私が言っていることを説明し、誰かに説明してください。
シナリオ:
まず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)
Positioningに加えて、すべてのアクション(回転、スケーリングなど)はこのアンカーポイントに基づいています。
このポリシーは十分に公正であり、スケーリングされたノード(setScale(X)
)を特定の位置に移動するときに混乱することはありません。ノードの位置(ノードのコンテンツではありません!)は、アクション後の画面で変更されないためです。
(追記:ノードを回転/スケーリングすると、内部ノードのコンテンツが回転/スケーリングされることを知っていました)
続けましょう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は、スケーリング、回転、および...の目的でアンカーポイントも使用しますが、そのアンカーポイントを配置に使用しません!!!
質問>>>> なぜですか?どうすれば同じCCNodeのようなsetPosition()
動作をさせることができCCLayer
ますか?
PS:私も試しました->ignoreAnchorPointForPosition(true)
が、役に立ちませんでした。
(@ cocos2d-xバージョンは2.2.3です)