AnchorPointが「CCLayer」の配置に影響しないのはなぜですか?


8

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です)

回答:


0

`ignoreAnchorPointForPosition(true)を設定しようとしたが、それをfalseに設定しようとしたか?

CCLayer initメソッド呼び出しはignoreAnchorPointForPosition(true)、基本的にcocos に配置のアンカーポイントを無視するように指示します。これをfalseに設定すると、位置のアンカーポイントを尊重する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.