2014-06-06 3 views
17

iOS SpriteKit 프로젝트에서 하나의 원을 그리려고하지만 원의 가장자리가 매끄럽지 않습니다. Photoshop으로 그릴 때 멋지게 그려진 서클을 원합니다 (앤티 앨리어싱). 비슷한 질문을 몇 개 발견했지만 내 문제는 여전히 남아 있습니다.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; 
} 

트릭이란 무엇입니까?

+1

나는 노드에 0보다 큰 lineWidth 값을 주어야한다고 생각한다. 안티 앨리어싱은 기본적으로 활성화되어 있지만, 필로가 아닌 라인에만 적용된다고 생각한다. – gabuh

+3

한편, SKShapeNode의 앤티 앨리어싱은 그리 좋지 않습니다. 적어도 필자가했던 테스트에서 나는 정상적인 이미지로 SKSpriteNodes를 만들지 않았습니다. – gabuh

+0

@ gabuh thanks :). lineWidth = 5로 설정하면 트릭이 발생했습니다. 포인트를 얻으려면 답변으로 게시해야합니다. :) 감사! – xpepermint

답변

14

안티 앨리어싱은 기본적으로 활성화되어 있지만 채우기가 아닌 줄에만 적용됩니다.

lineWidth를 0보다 큰 숫자로 설정하고 다시 시도하십시오.

6

antialised 속성을 YES로 설정하십시오.

shapeNode.antialiased = YES; 

채우기 색을 사용하면 거친 가장자리가 보이지 않습니다.

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

이제 안티 앨리어싱 속성에서 YES와 NO 사이를 전환하십시오. 차이점을 알 수 있습니다.