Tôi nghĩ rằng có một sự khác biệt giữa hành vi CCLayer và CCNode khi tôi thay đổi AnchorPoint của họ.
Tôi sẽ mô tả những gì tôi muốn nói và xin vui lòng ai đó giải thích nó.
Kịch bản:
Tôi bắt đầu vớiCCNode
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)
Ngoài Định vị , tất cả các hành động (như Xoay, Thu nhỏ ) đều dựa trên điểm neo này.
Chính sách này đủ công bằng và bạn sẽ không bị nhầm lẫn khi di chuyển một nút được chia tỷ lệ ( setScale(X)
) sang một vị trí nào đó bởi vì vị trí của nút ( chứ không phải nội dung của nút! ) Sẽ không thay đổi trên màn hình sau bất kỳ hành động nào.
( PS: Chúng tôi biết rằng xoay / chia tỷ lệ một nút sẽ xoay / chia tỷ lệ nội dung nút bên trong)
Hãy tiếp tục với 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).
Mặc dù CCLayer cũng sử dụng điểm neo cho các mục đích mở rộng, xoay và ..., nhưng KHÔNG sử dụng điểm neo của nó để định vị !!!
Câu hỏi >>>> TẠI SAO? và Làm cách nào tôi có thể có cùng CCNodesetPosition()
hành viCCLayer
?
Tái bút: Tôi cũng đã thử ->ignoreAnchorPointForPosition(true)
nhưng không được.
(Phiên bản @ cocos2d-x là 2.2.3)