2013-09-30 19 views
5

Potrafię rysować Prostokąt za pomocą prostego SKSpriteNode. Ale nie mogę rysować w nim innych typów rysunków, jak Trójkąt, Kółko itd. Z DWÓCH KOLORÓW. Ktoś zasugerował, aby przejść z CGPath. Ale jestem początkującym i nie wiem, aby narysować tego typu skomplikowane rzeczy. Proszę, każdy może zilustrować prosty sposób postępowania z tymi rysunkami z MULTICOLOR w SPRITEKIT. Oznacza, że ​​ich górna część to jeden kolor, a dolna część drugi kolor. Bardziej zwięzłe, aby powiedzieć, że Kształt jest podzielony na dwa kolory, niezależnie od tego, czy jest to gwiazda, prostokąt, trójkąt czy inaczej. Każda pomoc zostanie bardzo doceniona.Rysuj prostokąt/okrąg i trójkąt w Spritekit z dwoma kolorami. . .

Dzięki.

Odpowiedz

8

Możesz użyć SKShapeNode do rysowania kształtów w sprite kit, ale każdy SKShapeNode jest ograniczony do jednego koloru linii (strokeColor) i jednego koloru wypełnienia.

Można jednak utworzyć niestandardową podklasę SKNode, która zawiera dwa obiekty SKShapeNodes jako elementy podrzędne, z których każdy ma inne kolory obrysu/wypełnienia.

Coś jak to będzie pracować dla niestandardowego SKNode który rysuje kwadrat z lewej i górnej czerwony, prawy i dolny zielony:

- (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

Jak powiedziałem, że rysunek będzie wypełniona dwóch kolorach. Jak mogę wypełnić linie. To musi być albo raz w prostokącie, albo w innym. Przyznaję, że jest to sposób na rysowanie, ale ja tylko pytam, jak mogę to wypełnić? – Programmer

+0

Nie wiem, co masz na myśli. Czy możesz przesłać zdjęcie tego, jak chcesz wyglądać? – Greg

+0

Mam opublikowany próbkę obrazu tutaj. [link] (http://postimg.org/image/je24gs8yv/) – Programmer

Powiązane problemy