2013-10-31 12 views
7

मैं एपल्स स्प्राइटकिट फ्रेमवर्क के साथ ए (100,50) से बी (250,450) कहने के लिए एक रेखा खींचना चाहता हूं।क्या स्प्राइटकिट एनिमेटेड के साथ एक रेखा खींचना संभव है?

अब तक मैं SKShapeNode का उपयोग करके इस लाइन को आकर्षित करने और इसकी पथ संपत्ति सेट करने में सक्षम हूं।

जो मैं प्राप्त करना चाहता हूं वह इस पंक्ति को एनिमेटेड आकर्षित करना है। आइए कहें कि बिंदु ए से बी

पर मुझे रेखा खींचने में 2 सेकंड लग सकते हैं, मैंने SKAction कक्षा में देखा लेकिन ऐसा कोई तरीका नहीं है जो डिफ़ॉल्ट रूप से इस कार्यक्षमता का समर्थन करता है।

यह वह जगह है कोड मैं लाइन बनाने के लिए उपयोग:

CGMutablePathRef path = CGPathCreateMutable(); 
CGPathMoveToPoint(path, NULL, 100, 50); 
CGPathAddLineToPoint(path, NULL, 250.0, 450.0); 

SKShapeNode *line = [SKShapeNode node]; 
line.path = path; 
[line setStrokeColor:[UIColor whiteColor]]; 
[self addChild:line]; 

किसी को भी सही दिशा में मुझे बात कर सकते हैं?

SKAction performSelector: onTarget:

और

SKAction waitForDuration:

आप एक SKShapeNode उपवर्ग यदि आप में उन दो विधियों का उपयोग कर सकते हैं:

+0

जोड़ने की तरह, यह और अधिक लचीला बनाना चाहते थे सकता है आप फिर से शब्द अपने प्रश्न कर सकते हैं? आम तौर पर 'मुझे teh codez' टाइप अनुरोधों को SO के लिए एक अच्छा मिलान नहीं माना जाता है। शायद आपने जो कोशिश की है, और जो काम नहीं कर रहा है उस पर विस्तृत करें। –

+2

दोस्तों, किसी को परेशान छोड़ने के बजाए, एक करीबी वोट की व्याख्या करने के लिए टिप्पणी छोड़ना सहायक होता है। इस संकेत के लिए –

+2

धन्यवाद जैस्पर। हालांकि अब मैंने खुद को एक अच्छा कामकाजी समाधान लिखा है। मैंने प्रारंभ और समापन बिंदु के साथ लाइन बनाने के लिए SKShapeNode को उपclassed और फिर एनिमेटेड ड्राइंग करने के लिए एक कस्टम SKAction जोड़ा। –

उत्तर

4

आप की संभावना को प्राप्त कर सकता है कि आप क्या चाहते हैं SKAction के साथ कुछ तरीकों समय के साथ रेखा खींचने के लिए SKAction sequence

आपको प्रत्येक पुनरावृत्ति को आकर्षित करने के लिए मैन्युअल रूप से नए स्थान की गणना करने की आवश्यकता होगी और यह निर्धारित करना होगा कि रेखा पूरी हो गई है और समय प्रक्रिया के साथ ड्राइंग समाप्त हो गई है।

स्प्राइटकिट के माध्यम से इस कार्यक्षमता को प्राप्त करने का कोई दूसरा तरीका निश्चित रूप से रुचि रखते हैं, लेकिन यदि नहीं, तो यह काम करना चाहिए।

क्षमा करें, इस कोड को कोड करने का समय नहीं है, लेकिन तर्क आपको वहां ले जाना चाहिए।

अद्यतन:

मैं एक और विकल्प है जो मैं व्यक्तिगत रूप से लगता है कि थोड़ा आसान है के बारे में सोचा।

  1. मूल बिंदु और अंत बिंदु के बीच कोण की गणना करें।
  2. मूल बिंदु और अंत बिंदु से दूरी की गणना करें।
  3. सर्कल या पिक्सेल का आकार नोड भी बनाएं। इसके बारे में सोचें क्योंकि आपका पेंसिल बिंदु आप के साथ चित्रित होगा।
  4. आकृति नोड घुमाएं ताकि यह आपके द्वारा गणना किए गए कोण का उपयोग करके अंत बिंदु की ओर कोण हो।
  5. एक एसकेएक्शन बनाएं जो आपके आकार की दूरी के आधार पर आपके आकार नोड की चौड़ाई को स्केल करता है।
  6. SKAction चलाएं।

यह अपेक्षाकृत आसान लगता है, लेकिन आप अभी भी उपवर्ग यदि आप रंग मानकों आदि

+0

शायद दो sprites का उपयोग करने का प्रयास करें। एक आपकी रेखा का रंग और दूसरा पृष्ठभूमि का रंग। उन्हें क्षैतिज पैमाने पर। – TJA

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