2014-06-06 22 views
17

Cerco di disegnare un cerchio singolo nel mio progetto SpriteKit per iOS ma i bordi del cerchio non sono lisci. Mi piacerebbe avere un cerchio ben disegnato come lo disegnerei con Photoshop (anti-aliasing). Ho trovato diverse domande simili ma il mio problema rimane.Disegna cerchio liscio nel kit sprite iOS

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

Qual è il trucco qui?

+1

Penso che sia necessario assegnare al nodo un valore di larghezza riga superiore a 0. L'antialiasing è attivato per impostazione predefinita, ma penso che si applichi solo alle linee, non al riempimento. – gabuh

+3

A proposito, l'antialiasing di SKShapeNode non è molto buono, almeno nei test che ho fatto qualche tempo fa, ho finito con la creazione di SKSpriteNodes con immagini normali. – gabuh

+0

@gabuh grazie :). Impostare lineWidth = 5 ha fatto il trucco. Dovresti postare questo come una risposta per guadagnare punti :). Grazie! – xpepermint

risposta

14

L'antialiasing è attivato di default, ma si applica solo alle linee, non al riempimento.

Impostare la larghezza della linea su un numero maggiore di 0 e riprovare.

6

Impostare la proprietà antializzata su SÌ.

shapeNode.antialiased = YES; 

I bordi grezzi non sono visibili quando si utilizza il colore di riempimento.

//shapeNode.fillColor = [SKColor redColor]; 
shapeNode.strokeColor =[SKColor redColor]; 
shapeNode.antialiased = YES; 
shapeNode.lineWidth = 1; 

Ora passare tra SI e NO per la proprietà antialisa. Noterai la differenza.