2009-12-23 47 views
25

Tôi chỉ đọc xong một số các tài liệu cocos2d, và như xa như tôi hiểu thêm một hình nền vào một lớp bạn phải làm một cái gì đó như:Cocos2d thêm ảnh nền vào một lớp?

Sprite * bg = [Sprite spriteWithFile:@"Background.png"]; 
[layer addChild:bg z:0]; 

allthough như xa như thử nghiệm của tôi đi, bạn có thể chỉ trực tiếp thêm sprite đến hiện trường như thế này:

@implementation IntroScene 
- (id) init { 
self = [super init]; 
if (self != nil) { 
    Sprite * bg = [Sprite spriteWithFile:@"Background.png"]; 
    [bg setPosition:ccp(240, 160)]; 
    [self addChild:bg z:0]; 
    [self addChild:[MenuLayer node] z:1]; 
} 
return self; 

}

sự khác biệt giữa 2 lựa chọn này là gì, và cách tốt hơn để thiết lập một nền tảng cho một lớp là gì ?. Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào.

+0

Hãy nhớ rằng Sprite đã trở thành CCSprite. Vâng, hãy nhớ rằng Danyal. –

Trả lời

25

Bạn không cần phải có một lớp, nhưng chúng rất tiện dụng. Hãy suy nghĩ của các lớp như là một cách để nhóm các sprites (cả trực quan và tổ chức). Bạn có thể muốn hình nền của bạn được nhóm lại thành một lớp và tất cả kẻ thù trong một trò chơi dưới dạng một lớp khác. Điều này cho phép bạn xử lý từng bộ một cách rõ ràng hơn. ví dụ. Bạn có thể loại bỏ một lớp cụ thể thay vì tìm tất cả các kẻ thù và loại bỏ chúng.

Nếu được, hãy chơi với các lớp trong Photoshop hoặc chương trình chỉnh sửa đồ họa. Các lớp trong cocos2d hoạt động tương tự.

Đối với một cảnh đơn giản, việc thêm nền vào một lớp hoặc một cảnh sẽ không tạo ra nhiều khác biệt. Nhưng nó không mất nhiều thời gian trước khi lợi ích của việc phân tầng các cú đá.

+0

Cảm ơn bạn đã xóa nó cho tôi. –

8

Ngoài ra các lớp kiểm soát thứ tự bản vẽ (trên và trên bất kỳ thứ tự z liên lớp nào).

Trong geoSpark, ví dụ: tôi có lớp nền, lớp tia lửa, lớp giao diện người dùng, v.v. (Giản thể). Nhưng điều này cho phép tôi đảm bảo giao diện người dùng của tôi luôn ở trên bất kỳ nội dung trò chơi nào (lớp tia lửa) và tất cả mọi thứ ở trên nền.

Nếu trò chơi của bạn chỉ hiển thị phụ gia, thứ tự vẽ sẽ không quan trọng nhiều. :)

- David

4

cảnh là một bảng đen, lớp là một trang tin tức ... được viết trên trang, nhưng, nếu bạn muốn, bạn có thể viết trên diễn đàn. Nếu bạn muốn xóa tất cả mới.

0

Trong cocos2d chúng ta có thể thêm bất kỳ nút nào trên bất kỳ nút nào. Nhưng nó phụ thuộc vào mức độ phân cấp.

Bạn có thể thêm Lớp trên Cảnh. Nếu bạn muốn cùng một tài sản hoặc tìm kiếm tất cả các lớp mà bạn thêm vào một CCScene bạn có thể thêm những người trong CCScene (như trong trường hợp thứ hai của bạn). nhưng nếu bạn muốn có tính năng khác nhau trên mỗi lớp, hãy thêm chúng vào CCLayer.

CCLayer có nghĩa là để nhóm một tập hợp các nút/sprites cho một số mục đích. Ví dụ bạn có thể thêm một lớp bao gồm các tùy chọn sau khi tạm dừng một trò chơi hoặc lớp HUD để hiển thị loại som luôn trên màn hình cùng với một số lớp cuộn (giống như trong một số trò chơi nền tảng cuộn).

Cuối cùng, bạn thậm chí có thể CCNode trên CCScene, một lớp trên lớp khác và thậm chí là CCNode trên CCSprite. Nhưng thứ tự vẽ trong ngữ cảnh đồ họa trong cocos2d khác nhau.

Hy vọng bạn có sự khác biệt.

Chúc may mắn!