Tại sao AnchorPoint không ảnh hưởng đến Định vị `CCLayer`?


8

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)

Câu trả lời:


0

Bạn nói rằng bạn đã thử cài đặt `ignAnchorPointForPocation (true), nhưng bạn đã thử đặt nó thành false chưa?

Các cuộc gọi phương thức init CCLayer ignoreAnchorPointForPosition(true), về cơ bản sẽ cho cocos bỏ qua điểm neo để định vị. Bạn có thể đặt nó thành false và nó phải tôn trọng điểm neo cho vị trí.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.