2014-06-06 21 views
17

iOS SpriteKit projemde tek bir daire çizmeye çalışıyorum ancak çemberin kenarları düzgün değil. Photoshop (anti-aliasing) ile çizer gibi güzel çizilmiş bir daire olmasını isterim. Birkaç benzer soru buldum ama problemim devam ediyor.iOS sprite kitinde düzgün daire çizin

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

Buradaki numara nedir?

+1

Düğümün 0'dan büyük bir satır genişliği değerini vermeniz gerektiğini düşünüyorum. Antialiasing varsayılan olarak etkinleştirildi, ancak yalnızca satırlar için değil dolgu için geçerli olduğunu düşünüyorum. – gabuh

+3

Bu arada, SKShapeNode'un antialiasing'i çok iyi değil, en azından bir süre önce yaptığım testlerde, normal görüntülerle SKSpriteNodes yaratmaya son verdim. – gabuh

+0

@gabuh thanks :). LineWidth = 5 ayarı hile yaptı. Bunu puan kazanmak için bir cevap olarak göndermelisiniz :). Teşekkürler! – xpepermint

cevap

14

Antialiasing varsayılan olarak etkindir, ancak yalnızca satırlar için değil, dolgu için geçerlidir.

LineWidth değerini 0'dan büyük bir sayıya ayarlayın ve tekrar deneyin.

6

Antialize özelliğini YES olarak ayarlayın.

shapeNode.antialiased = YES; 

Doldurma rengi kullandığınızda pürüzlü kenarlar görünmez.

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

Şimdi, antialisaed özelliği için EVET ve NO arasında geçiş yapın. Farkı fark edeceksiniz.