2011-11-04 18 views
7

Tôi bắt đầu học cocos2d và tôi đã tự hỏi tại sao chúng tôi sử dụng convertToGL từ CCDirector, [[CCDirector sharedDirector] convertToGL: touchLoc]; khi chúng tôi đã có [touch view] từ [touch locationInView: [touch view]]; ?cocos2d: tại sao convertToGL và tại sao addChild CCSprite trước phần thân của nó?

Ngoài ra, trước tiên, chúng tôi "addChild" một CCSprite, chứa một hình ảnh, sau đó chúng tôi đặt thân hình của nó và ccsprite trở thành người dùng dữ liệu của phần thân này. Thay vào đó, sẽ không tốt hơn nếu "addChild" thay thế? hoặc là nó cho bất kỳ mục đích cụ thể?

Cảm ơn

+0

chỉ một câu hỏi, trừ khi câu hỏi khác/followup có liên quan đến câu hỏi chính – LearnCocos2D

+1

phần thứ hai: Tôi cho rằng bạn có nghĩa là cơ thể Box2D. Phương thức addChild chỉ lấy các đối tượng bắt nguồn từ CCNode. Nó không biết cách làm việc với lớp b2Body. – LearnCocos2D

+0

@ LearnCocos2D: cảm ơn vì đã trả lời nhanh! và xin lỗi cho câu hỏi đôi, tôi sẽ ghi nhớ nó! – Paul

Trả lời

12

Điều này là do chế độ xem OpenGL (lớp EAGLView) sử dụng hệ thống tọa độ khác với Cocoa Touch.

Ví dụ, vị trí 0,0 cho Cocoa Touch nằm ở góc trên bên trái, trong khi vị trí 0,0 cho OpenGL nằm ở góc dưới bên trái. Đó là lý do tại sao bạn cần phải "chuyển đổi sang GL" tất cả tọa độ UIView.

Chuyển đổi cũng tính đến hướng thiết bị hiện tại.

+0

cảm ơn, được thôi! Chúc mừng – Paul

Các vấn đề liên quan