2009-12-23 5 views
25

Je viens de terminer la lecture de certains documents de cocos2d, et pour autant que je comprends d'ajouter une image de fond à une couche que vous devez faire quelque chose comme:Cocos2d ajouter une image d'arrière-plan à un calque?

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

Allthough aussi loin que mes tests va vous pouvez juste ajouter directement l'image-objet sur la scène comme ceci:

@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; 

}

Quelle est la différence entre ces 2 options, et quelle est la meilleure façon de définir un arrière-plan pour une couche ?. Toute aide est la bienvenue.

+0

Gardez à l'esprit que Sprite est depuis devenu CCSprite. Oui, porte cet esprit Danyal. –

Répondre

25

Vous n'avez pas besoin d'une couche, mais elles sont pratiques. Considérez les couches comme un moyen de regrouper les sprites (visuellement et organisationnellement). Vous souhaiterez peut-être regrouper vos images d'arrière-plan en tant que calque et tous les ennemis d'une partie en tant que calque. Cela vous permet de traiter chaque ensemble plus proprement. par exemple. Vous pouvez supprimer un calque spécifique au lieu de trouver tous les ennemis et de les supprimer. Si cela vous aide, jouez avec des calques dans Photoshop ou un programme d'édition graphique. Les calques dans cocos2d fonctionnent de la même manière.

Pour une scène simple, ajouter l'arrière-plan à un calque ou à une scène ne fera pas beaucoup de différence. Mais il ne faut pas longtemps avant que les avantages de la superposition ne s'en mêlent.

+0

Merci qui l'a éclairci pour moi. –

8

Les couches contrôlent également l'ordre de dessin (au-delà de tout ordre z inter-couches).

Dans geoSpark, par exemple, j'ai une couche d'arrière-plan, une couche d'étincelle, une couche d'interface utilisateur, etc. (simplifié). Mais cela me permet de m'assurer que mes trucs d'interface utilisateur sont toujours au-dessus de n'importe quel jeu (la couche d'étincelle) et tout ce qui est au-dessus du fond.

Si votre jeu ne fait que du rendu additif, l'ordre de tirage n'aura pas d'importance. :)

- scène David

4

est un tableau noir, la couche est une page ... nouvelles est écrit à la page, mais, si vous voulez, vous pouvez écrire sur le tableau. Si vous voulez effacer tout nouveau.

0

Dans cocos2d, nous pouvons ajouter n'importe quel noeud sur n'importe quel noeud. Mais cela dépend du niveau de la hiérarchie.

Vous pouvez ajouter des couches sur des scènes. Si vous voulez la même propriété ou recherchez tous les calques que vous ajoutez sur un CCScene, vous pouvez les ajouter dans CCScene (comme dans votre deuxième cas). mais si vous voulez avoir une fonctionnalité différente sur chaque couche, ajoutez-les à CCLayer. CCLayer est conçu pour regrouper un ensemble de nœuds/sprites dans un but précis. Par exemple, vous pouvez ajouter un calque qui inclut des options après une pause de jeu, ou un calque HUD pour afficher som genre toujours à l'écran avec un calque de défilement (comme dans certains jeux de plateforme de défilement).

Enfin, vous pouvez même CCNode sur un CCScene, une couche sur une autre couche, et même un CCNode sur un CCSprite. Mais l'ordre de dessin dans le contexte graphique dans cocos2d diffère.

J'espère que vous avez fait la différence.

Bonne chance!

Questions connexes