Sto cercando di inserire una serie di sprite su uno strato, ma dal momento che voglio spostare tutti gli sprite come gruppo, ho creato un CocosNode, insieme alla stessa ridimensiona come schermo e posizionalo al centro dello schermo, quindi aggiungi gli Sprites a quel nodo (lightNode) invece di aggiungerli al livello.Cocos2d - più sprite su nodo principale non strato
quello che sto vedendo è che gli sprite non appaiono nei corretti (stessa?) Le posizioni rispetto a quando li ho posto in uno strato e non nel lightNode.
Ho creato un programma di test per mostrare il problema utilizzando il modello di applicazione XCode Cocos2d "Hello World" - Ho quindi sostituito il metodo -init() della classe HelloWorld in HelloWorldScene.m con questo codice.
-(id) init
{
if((self=[super init]))
{
// create my parent node that will contain all the related sprites
lightPane = [[CocosNode alloc] init];
CGSize paneSize = { 480, 320 };
[lightPane setContentSize:paneSize];
[lightPane setPosition:ccp(240, 160)];
// add pane to layer
[self addChild:lightPane z:0];
// add a series of sprites to demonstrate the problem
int y = 40;
int x;
for (x=30; x<300; x+=20)
{
Sprite *sp = [Sprite spriteWithFile:@"pause.png"];
[sp setPosition:ccp(x, y)];
NSLog(@"Next sprite at position (%d, %d)", x, y);
[lightPane addChild:sp z:1];
//[self addChild:sp z:1];
x+= 20;
}
}
return self;
}
Questo codice fa riferimento a un file PNG chiamato "pause.png" - basta prendere qualsiasi piccola immagine su 30x30 pixel in termini di dimensioni e posizionarlo in questo progetto per eseguirlo.
Quello che vedrete è che gli sprite appaiono circa a metà dello schermo, a partire dal centro e dirigersi verso il lato destro.
Se si commenta la riga aggiungendo lo sprite a lightPane e si annulla la riga sotto di esso e si esegue nuovamente l'esempio, gli sprite (correttamente) verranno visualizzati nelle corde che dovrebbero.
Questo, ovviamente, ha qualcosa a che fare con la CocosNode sto usando come un genitore per gli sprite. Qualcuno capisce cosa sto facendo male qui ??
domanda ben formata e buon esempio di codice! +1 – nash