Warum hat der AnchorPoint keinen Einfluss auf die CCLayer-Positionierung?

8

Ich denke, es gibt einen Unterschied zwischen dem CCLayer- und dem CCNode-Verhalten, wenn ich ihren AnchorPoint ändere.

Ich werde beschreiben, was ich meine und bitte jemand erklären.

Szenario: Ich beginne mitCCNode

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)

Zusätzlich zur Positionierung basieren alle Aktionen (wie Drehen, Skalieren ) auf diesem Ankerpunkt.

Diese Richtlinie ist fair genug und Sie werden nicht verwirrt, wenn Sie einen skalierten Knoten ( setScale(X)) an eine Position verschieben, da sich die Position des Knotens (und nicht der Inhalt des Knotens! ) Nach Aktionen auf dem Bildschirm nicht ändert.

( PS: Wir wussten, dass durch Drehen / Skalieren eines Knotens der interne Knoteninhalt gedreht / skaliert wird.)

Fahren wir fort mit 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).

Obwohl CCLayer den Ankerpunkt auch zum Skalieren, Drehen und ... verwendet, verwendet es seinen Ankerpunkt NICHT zum Positionieren !!!

Frage >>>> WARUM ? und Wie kann ich das gleiche CCNode-ähnliche setPosition()Verhalten für haben CCLayer?


PS: Ich habe es auch versucht, ->ignoreAnchorPointForPosition(true)aber es hat nicht geholfen.

(@ cocos2d-x Version ist 2.2.3)

Emadpres
quelle

Antworten:

0

Sie sagen, Sie haben versucht, `ignoreAnchorPointForPosition (true) zu setzen, aber Sie haben versucht, es auf false zu setzen?

CCLayer-Init-Methodenaufrufe ignoreAnchorPointForPosition(true), die Cocos grundsätzlich anweisen , den Ankerpunkt für die Positionierung zu ignorieren. Sie können es auf false setzen und es sollte den Ankerpunkt für die Position berücksichtigen.

Aramusss
quelle