iphone - game - Cocos2d: mĂșltiples sprites en el nodo primario no en la capa
cocos game creator (2)
Intento colocar una serie de sprites en una capa, pero como quiero mover todos los sprites como grupo, he creado un CocosNode, lo configuré del mismo tamaño que la pantalla y lo coloqué en el centro del pantalla, luego agrega los Sprites a ese nodo (lightNode) en lugar de agregarlos a la capa.
Lo que estoy viendo es que los sprites no aparecen en las posiciones correctas (¿lo mismo?) En comparación con cuando los coloco en una capa y no en el lightNode.
Hice un programa de prueba para mostrar el problema usando la plantilla de aplicación Xcoode Cocos2d "Hello World" - Luego reemplacé el método -init () de la clase HelloWorld en HelloWorldScene.m con este código.
-(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;
}
Este código hace referencia a un archivo PNG llamado "pause.png": simplemente tome cualquier imagen pequeña de aproximadamente 30x30 píxeles de tamaño y colóquela en este proyecto para ejecutarla.
Lo que verá es que los sprites aparecen aproximadamente a la mitad de la pantalla, comenzando en el centro y dirigiéndose hacia el lado derecho.
Si comenta la línea agregando el sprite a lightPane, y deja de comentar la línea debajo de él, y vuelve a ejecutar la muestra, verá que los sprites (correctamente) aparecen en los coords que deberían.
Obviamente, esto tiene algo que ver con el CocosNode que estoy usando como padre de los sprites. ¿Alguien ve lo que estoy haciendo mal aquí?
Desea establecer la posición de lightPane
en 0,0
. La posición no está centrada por defecto, es la esquina inferior izquierda.
Tenga en cuenta que si se mueve a un atlas de sprites, esto no funcionará. No, a menos que cambie a la nueva versión de Cocos2d (1.9, que está en beta). La versión 1.9 le permitirá hacer crianza compleja de atlas sprites.