2014-06-06 28 views
17

में चिकनी सर्कल ड्रा करें मैं अपने आईओएस स्प्राइटकिट प्रोजेक्ट में एक सर्कल खींचने की कोशिश करता हूं लेकिन सर्कल के किनारों को चिकनी नहीं है। मैं एक अच्छी तरह से खींचा सर्कल करना चाहता हूं क्योंकि मैं फ़ोटोशॉप (एंटी-एलियासिंग) के साथ इसे आकर्षित करूंगा। मुझे कई समान प्रश्न मिले लेकिन मेरी समस्या बनी हुई है।आईओएस स्प्राइट किट

-(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 से अधिक लाइनविड्थ मान देने की आवश्यकता है। एंटीअलाइजिंग डिफ़ॉल्ट रूप से सक्रिय होती है, लेकिन मुझे लगता है कि केवल लाइनों पर लागू होता है, भरे नहीं। – gabuh

+3

वैसे, SKShapeNode का एंटीअलाइजिंग बहुत अच्छा नहीं है, कम से कम परीक्षणों में मैंने कुछ समय पहले किया था, मैंने सामान्य छवियों के साथ SKSpriteNodes बनाने समाप्त कर दिया। – gabuh

+0

@gabuh धन्यवाद :)। लाइनविड्थ = 5 सेट करना चाल है। आपको इसे अंक अर्जित करने के उत्तर के रूप में पोस्ट करना चाहिए :)। धन्यवाद! – xpepermint

उत्तर

14

एंटीअलाइजिंग डिफ़ॉल्ट रूप से सक्रिय होता है, लेकिन यह केवल लाइनों पर लागू होता है, भरे नहीं।

लाइनविड्थ को 0 से अधिक संख्या में सेट करें और पुनः प्रयास करें।

6

एंटीअलाइज्ड संपत्ति को YES पर सेट करें। जब आप भरण रंग का उपयोग

shapeNode.antialiased = YES; 

किसी न किसी किनारों दिखाई नहीं देते हैं।

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

अब एंटीअलाइज्ड संपत्ति के लिए हाँ और NO के बीच स्विच करें। आप अंतर देखेंगे।

संबंधित मुद्दे