2010-08-18 27 views
8

Salut, Désolé si cela est répondu ailleurs, mais je ne pouvais pas le trouver.Comment changer l'ordre Z des sprites en Objective-C?

C'est assez simple, je veux définir l'ordre Z des sprites que je crée en Objective-C, en particulier dans Cocos2D.

C'est l'erreur que je reçois en essayant de construire le code suivant:

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 doit pouvoir être réglé en quelque sorte - peut-il être uniquement mis sur la ligne de instanciation et non après qu'il a été créé? Dois-je créer une méthode setter pour un attribut pour CCSprite? Pourquoi n'aurait-il pas déjà ces méthodes?

Merci pour votre aide, -JJR

Répondre

5

figured it out:

Lorsque vous ajoutez l'image-objet à soi-même, besoin d'ajouter un paramètre:

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

[self addChild:mySprite z:1]; 

z = 0 est arrière-plan, l'index z le plus élevé sera au-dessus des autres sprites

-JJR

+3

vous pouvez également utiliser la méthode reorderChild pour changer son ordre z à la volée – LearnCocos2D

40

@JJR - à votre question initiale, si vous devez modifier l'ordre après avoir ajouté les sprites, comme l'a dit GamingHorror, utilisez

[self reorderChild:sprite z:newZ]; 

Votre réponse ne fonctionne que si tout ce que vous avez besoin est de définir l'ordre d'origine

JCM

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

vérifier la position z à la dernière ligne, j'espère que cela vous aidera