Als Folge auf Frage meiner vorherigen Frage zu displaying the anchor point, subclassed I CCSprite und seine Ziehverfahren wie folgt verändert:Wie kann ich die Begrenzungsbox für einen CCNode in cocos2d anzeigen?
[super draw];
ccDrawColor4F(0, 1, 0, 1);
ccDrawCircle(self.anchorPointInPoints, 20, 0, 8, YES);
Dies funktioniert gut. Für zusätzliche Kredite, fügte ich die nach ihrer Begrenzungsrahmen anzuzeigen:
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);
Dies auch große Werke, bis ich einen Sprit Reparent:
CGPoint oldPosition = [sprite convertToWorldSpace:sprite.position];
[sprite removeFromParentAndCleanup:NO];
[parentSprite addChild:sprite];
sprite.position = [sprite convertToNodeSpace:oldPosition];
Der Sprites jetzt in der richtigen Position und seinen Ankerpunktes zieht wo es sollte, aber die Bounding Box zieht an die falsche Stelle. Was mache ich falsch?
Vielen Dank! Sehr aufschlussreich. Alles jetzt behoben. Ich muss tatsächlich CCSprite ableiten, da ich Bounding-Boxen selektiv aktivieren möchte, aber das Ausleihen des Codes von CC_SPRITE_DEBUG_DRAW und das Zeichnen des Poly aus "quad_.tl.vertices" -Vertices macht genau das, was ich brauche. – mobopro