2010-08-18 43 views
8

Xin chào, Xin lỗi nếu điều này được trả lời ở một nơi khác, nhưng tôi không thể tìm thấy nó.Làm cách nào để thay đổi Thứ tự Z của các sprites trong Objective-C?

Nó khá đơn giản, tôi muốn đặt thứ tự Z của các sprites mà tôi tạo trong Objective-C, cụ thể là trong Cocos2D.

Đây là lỗi tôi nhận được khi cố gắng xây dựng đoạn mã sau:

CCSprite *mySprite = [CCSprite spriteWithFile:@"Image.png" rect:CGRectMake(0, 0, 96, 24)]; 
mySprite.zOrder = 0; 

...220: error: object cannot be set - either readonly property or no setter found

Z-Order phải có khả năng được thiết lập bằng cách nào đó - có thể nó chỉ được đặt trên dòng instantiation và không sau khi nó được tạo ra? Tôi có phải tạo một phương thức setter cho một thuộc tính cho CCSprite không? Tại sao nó lại không có những phương pháp đó?

Nhờ sự giúp đỡ của bạn, -JJR

Trả lời

5

đặn nó ra:

Khi thêm sprite tự, cần phải thêm một tham số:

CCSprite *mySprite = [CCSprite spriteWithFile:@"mySpriteImage.png" rect:CGRectMake(0, 0, 96, 24)]; 

[self addChild:mySprite z:1]; 

z = 0 là nền, chỉ số z cao nhất sẽ nằm trên cùng của các họa tiết khác

-JJR

+3

bạn cũng có thể sử dụng phương pháp reorderChild để thay đổi thứ tự z của nó một cách nhanh chóng – LearnCocos2D

40

@JJR - cho câu hỏi ban đầu của bạn, nếu bạn cần phải sắp xếp lại sau khi thêm sprites, như GamingHorror nói, sử dụng

[self reorderChild:sprite z:newZ]; 

câu trả lời của bạn hoạt động nếu bạn chỉ cần có để thiết lập trật tự ban đầu

JCM

1
_background.name = @"background"; 
[self addChild:_background]; 
_background.zPosition =-5; 

kiểm tra ra vị trí z ở dòng cuối cùng, tôi hy vọng điều này sẽ giúp bạn

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