Как мне изменить Z-порядок спрайтов? - PullRequest
8 голосов
/ 18 августа 2010

Я хочу установить Z-порядок спрайтов, которые я создаю в Objective-C, особенно в Cocos2D.

Это ошибка, которую я получаю при попытке создать следующий код:

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-порядок должен быть как-то установлен - его можно установить только на линии создания экземпляров, а не после того, как он был создан? Нужно ли создавать метод установки для атрибута для CCSprite? Почему у него уже нет тех методов?

Ответы [ 3 ]

40 голосов
/ 21 марта 2011

Если вам нужно изменить порядок после добавления спрайтов, как сказал GamingHorror, используйте:

[self reorderChild:sprite z:newZ];

Ваш ответ работает, если все, что вам нужно, это установить исходный порядок

6 голосов
/ 18 августа 2010

Разобрался:

При добавлении спрайта к себе нужно добавить параметр:

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

[self addChild:mySprite z:1];

z = 0 - фон, самый высокий индекс z будет сверхудругие спрайты

-JJR

1 голос
/ 07 апреля 2014
_background.name = @"background";
[self addChild:_background];
_background.zPosition =-5;

проверьте позицию z в ​​последней строке, надеюсь, это поможет вам

...