xcode ios7 sprite-kit skspritenode

cómo Xcode elimina automáticamente skspritenode del nodo padre



ios7 sprite-kit (2)

Puedo ver eso con el contador de nodos que se muestra en la pantalla: no aumenta con el número de rocas.

Esto se debe a que Sprite Kit solo cuenta los nodos "renderizados" (es decir, nodos en la pantalla) de forma predeterminada. Para ver los nodos eliminados, debe habilitar un indicador de depuración no documentado adicional:

[self.scene.view setValue:@(YES) forKey:@"_showsCulledNodesInNodeCount"];

Alternativamente, para obtener el recuento de nodos verdadero de un nodo, como la escena, agregue esto donde desee registrar el recuento de nodos:

NSLog(@"node count: %u", (unsigned int)self.children.count);

En otras palabras: si no elimina un nodo de su elemento primario, Sprite Kit no lo hará de forma automática bajo ninguna circunstancia. Sin embargo, se aclarará el gráfico de nodos de la escena anterior cuando se presente una nueva escena, siempre que no haya ciclos de retención (que se encuentran comúnmente cuando se mantiene una referencia fuerte a un nodo padre o hermano en una subclase SKNode personalizada).

Soy nuevo en el desarrollo de objectif-c y sprite-kit (pero no en programación). Así que estoy comenzando Spri de Apple. La aplicación funciona perfectamente, excepto que los nodos que representan las rocas se eliminan automáticamente de su elemento primario cuando las rocas caen por la parte inferior de la escena. Esto, sin implementar el método - (void) didSimulatedPhysics:

- (void)didSimulatedPhysics { [self enumerateChildNodesWithName:@"rock" usingBlock:^(SKNode *node, BOOL *stop) { if (node.position.y < 0) [node removeFromParent]; }]; }

Puedo ver eso con el contador de nodos que se muestra en la pantalla: no aumenta con el número de rocas. Entonces mi pregunta es: ¿Xcode administra el método removeFromParent para mi programa? Si es así, ¿podría decirme la opción de desactivar? Intento conectar ARC a NO, pero no cambia nada.

Espero que mi mensaje sea claro. Si no, por favor dime. Gracias de antemano por su respuesta.

Raphael


Antes de pedir un SKView para presentar una escena, debe llamar a estas líneas:

SKView * skView = (SKView *)self.view; skView.showsFPS = YES; skView.showsNodeCount = YES; // This is what shows the node count.

De la documentación de Apple, la propiedad showsNodeCount se describe como:

Un valor booleano que indica si la vista muestra el recuento de los nodos visibles en la escena.

Por lo tanto, Sprite Kit no los elimina de su padre. Si esos nodos volvieran a los límites de la vista, a su vez aumentarían este número de nodos.