Como una pregunta de seguimiento a mi pregunta anterior sobre displaying the anchor point, me subclases CCSprite y cambió su método de sorteo de la siguiente manera:¿Cómo puedo mostrar el cuadro delimitador para un CCNode en cocos2d?
[super draw];
ccDrawColor4F(0, 1, 0, 1);
ccDrawCircle(self.anchorPointInPoints, 20, 0, 8, YES);
Esto funciona muy bien. Para el crédito adicional, añadí lo siguiente para mostrar su cuadro delimitador:
CGRect bb = self.boundingBox;
CGPoint vertices[4] = {
[self convertToNodeSpace:ccp(bb.origin.x, bb.origin.y)],
[self convertToNodeSpace:ccp(bb.origin.x + bb.size.width, bb.origin.y)],
[self convertToNodeSpace:ccp(bb.origin.x + bb.size.width, bb.origin.y + bb.size.height)],
[self convertToNodeSpace:ccp(bb.origin.x, bb.origin.y + bb.size.height)],
};
ccDrawPoly(vertices, 4, YES);
Esto también funciona muy bien, hasta que Reparent un sprite:
CGPoint oldPosition = [sprite convertToWorldSpace:sprite.position];
[sprite removeFromParentAndCleanup:NO];
[parentSprite addChild:sprite];
sprite.position = [sprite convertToNodeSpace:oldPosition];
Los de sprites ahora en la posición adecuada y su punto de anclaje dibuja donde debería, pero el cuadro delimitador se dibuja en el lugar equivocado. ¿Qué estoy haciendo mal?
¡Gracias! Muy esclarecedor Todo arreglado ahora. De hecho, necesito subclasificar CCSprite ya que quiero activar selectivamente cuadros delimitadores, pero tomar prestado el código de CC_SPRITE_DEBUG_DRAW y dibujar el poli formado por los vértices 'quad_.tl.vertices' hace exactamente lo que necesito. – mobopro