2014-06-06 15 views
17

Ich versuche, einen einzelnen Kreis in meinem iOS SpriteKit Projekt zu zeichnen, aber die Kanten des Kreises sind nicht glatt. Ich hätte gerne einen schön gezeichneten Kreis, wie ich ihn mit Photoshop zeichnen würde (Anti-Aliasing). Ich habe mehrere ähnliche Fragen gefunden, aber das Problem bleibt bestehen.Zeichne glatten Kreis in iOS Sprite Kit

-(id)initWithSize:(CGSize)size 
{ 
    if (self = [super initWithSize:size]) 
    { 
     self.backgroundColor = [SKColor whiteColor]; 
     self.scaleMode = SKSceneScaleModeAspectFill; 
     self.size = CGSizeMake(640, 1136); 

     CGRect circle = CGRectMake(100.0, 100.0, 80.0, 80.0); 
     SKShapeNode *shapeNode = [[SKShapeNode alloc] init]; 
     shapeNode.path = [UIBezierPath bezierPathWithOvalInRect:circle].CGPath; 
     shapeNode.fillColor = [SKColor redColor]; 
     shapeNode.lineWidth = 0; 
     [self addChild:shapeNode]; 
    } 
    return self; 
} 

Was ist der Trick hier?

+1

Ich denke, dass Sie den Knoten einen LineWidth Wert größer als 0 geben müssen. Das Antialiasing ist standardmäßig aktiviert, aber ich denke, dass gilt nur für die Zeilen, nicht die Füllung. – gabuh

+3

Übrigens, das Antialiasing von SKShapeNode ist nicht sehr gut, zumindest habe ich in den Tests, die ich vor einiger Zeit gemacht habe, die Erstellung von SKSpriteNodes mit normalen Bildern beendet. – gabuh

+0

@gabuh danke :). Die Einstellung lineWidth = 5 hat den Trick gemacht. Sie sollten dies als Antwort posten, um Punkt zu verdienen :). Vielen Dank! – xpepermint

Antwort

14

Das Antialiasing ist standardmäßig aktiviert, aber es gilt nur für die Zeilen, nicht für die Füllung.

Setzen Sie die lineWidth auf eine Zahl größer als 0 und versuchen Sie es erneut.

6

Legen Sie die Antialiasing-Eigenschaft auf YES fest.

Die Ecken sind nicht sichtbar, wenn Sie Füllfarbe verwenden.

Jetzt wechseln Sie zwischen JA und NEIN für die Antialiasing-Eigenschaft. Sie werden den Unterschied bemerken.