2013-09-30 13 views
5

Ich kann Rectangle mit einfachen SKSpriteNode zeichnen. Aber ich kann nicht andere Arten von Zeichnungen wie Triangle, Circle usw. mit ZWEI SPLIT COLOURS zeichnen. Jemand schlug vor, mit CGPath zu gehen. Aber ich bin Neuling und weiß nicht, solche Art von komplexen Dingen zu zeichnen. Bitte erläutern Sie einfach, wie Sie mit diesen Zeichnungen mit MULTICOLOR in SPRITEKIT umgehen können. Ihr oberer Teil ist eine Farbe und der untere Teil in der 2. Farbe. Genauer gesagt, dass Shape in zwei Farben unterteilt ist, egal ob Stern, Rechteck, Dreieck oder sonst. Jede Hilfe wird sehr geschätzt.Zeichnen Sie Rechteck/Kreis und Dreieck in Spritekit mit zwei Farben. . .

Danke.

Antwort

8

Mit SKShapeNode können Sie Formen im Sprite-Kit zeichnen, aber jeder SKShapeNode ist auf eine Linienfarbe (strokeColor) und eine Füllfarbe beschränkt.

Sie können jedoch eine benutzerdefinierte SKNode-Unterklasse erstellen, die zwei SKShapeNodes als untergeordnete Elemente mit jeweils unterschiedlichen strokeColors/fillColors enthält.

Etwas ähnliches wird für eine benutzerdefinierte SKNode arbeiten, die ein Quadrat mit links und oben rot, rechts und unten grün zieht: wird

- (id) init { 
    if (self = [super init]) { 
     SKShapeNode* topLeft = [SKShapeNode node]; 
     UIBezierPath* topLeftBezierPath = [[UIBezierPath alloc] init]; 
     [topLeftBezierPath moveToPoint:CGPointMake(0.0, 0.0)]; 
     [topLeftBezierPath addLineToPoint:CGPointMake(0.0, 100.0)]; 
     [topLeftBezierPath addLineToPoint:CGPointMake(100.0, 100.0)]; 
     topLeft.path = topLeftBezierPath.CGPath; 
     topLeft.lineWidth = 10.0; 
     topLeft.strokeColor = [UIColor redColor]; 
     topLeft.antialiased = NO; 
     [self addChild:topLeft]; 

     SKShapeNode* bottomRight = [SKShapeNode node]; 
     UIBezierPath* bottomRightBezierPath = [[UIBezierPath alloc] init]; 
     [bottomRightBezierPath moveToPoint:CGPointMake(0.0, 0.0)]; 
     [bottomRightBezierPath addLineToPoint:CGPointMake(100.0, 0.0)]; 
     [bottomRightBezierPath addLineToPoint:CGPointMake(100.0, 100.0)]; 
     bottomRight.path = bottomRightBezierPath.CGPath; 
     bottomRight.lineWidth = 10.0; 
     bottomRight.strokeColor = [UIColor greenColor]; 
     bottomRight.antialiased = NO; 
     [self addChild:bottomRight]; 
    } 
    return self; 
} 
+0

Wie ich sagte, dass Zeichnung mit zwei Farben gefüllt werden. Wie kann ich Linien füllen? Das muss entweder einmal das Rechteck oder anderes sein. Ich erkenne an, dass dies der Weg ist, um zu zeichnen, aber ich frage nur, wie kann ich es ausfüllen? – Programmer

+0

Ich weiß nicht, was du meinst. Kannst du ein Bild von dem hochladen, wie es aussehen soll? – Greg

+0

Ich habe ein Bildbeispiel hier gepostet. [link] (http://postimg.org/image/je24gs8yv/) – Programmer