आप अपने एएस 3 प्रोजेक्ट में अपने कई सी ++ कौशल लागू कर सकते हैं।
बहुत सारे चाल हैं। खुशी है कि आप मुख्य टाइमलाइन पर कोड डाल लाया। टाइमलाइन पर कोड डालने के बजाय (यह एएस 2 प्रोग्रामों में बहुत आम है और एएस 3 के साथ आप इसे पूरी तरह से टाल सकते हैं) मैं प्रत्येक ऑब्जेक्ट को एक अलग वर्ग के रूप में सोचने की सलाह दूंगा। आपके मूवीक्लिप कि आप माउसक्लिक कोड को लागू कर रहे हैं, उदाहरण के लिए, अपनी कक्षा के साथ बनाई गई वस्तु हो सकती है। कहें मूवीक्लिप एक गेंद का ग्राफिक है। आप एक 'गेंद' वर्ग है कि (inherits) मूवीक्लिप वर्ग फैली बनाने जाना चाहिए, और यह के भीतर माउस क्लिक घटना संभाल:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class myObjects.Ball extends MovieClip
{
public function Ball()
{
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
private function mouseDownHandler(event:MouseEvent):void
{
// Code
}
}
}
फिर, लाइब्रेरी फलक में गेंद की अपनी मूवीक्लिप मिल जाए, सही इसे क्लिक करें, गुण , उन्नत मोड पर स्विच करें, एएस के लिए निर्यात बंद करें। अब, ध्यान दें कि आपकी मूवीक्लिप पहले से ही मूवीक्लिप क्लास को बेस बेस के रूप में कैसे संदर्भित करती है? आपकी बॉल क्लास मूवीक्लिप क्लास को विस्तारित करने के बाद आपको इसकी आवश्यकता नहीं होगी .. इसलिए क्लास फ़ील्ड में 'myObjects.Ball' लिखें और बेस क्लास फ़ील्ड को साफ़ करें। यदि आप अपने नामांकित गेंद वर्ग के लिए पथ लिखते हैं तो फ्लैश आईडीई पता लगा सकता है तो आपको एक हरा चेकमार्क देखना चाहिए।
अब आपकी बॉल क्लास उस मूवीक्लिप का उपयोग करेगी, जब आप अपनी मुख्य कक्षा में बॉल का नया उदाहरण बनाते हैं, तो आप मूवीक्लिप की तरह इसके साथ काम कर सकते हैं और गतिशील रूप से चरण में संलग्न कर सकते हैं। या, आप इसे बॉल मूवीक्लिप मैन्युअल रूप से खींचकर टाइमलाइन में जोड़ सकते हैं।
मैंने समझाई गई कक्षा को विस्तारित करना 'विरासत' के एएस 3 का संस्करण है (बॉल क्लास मूवीक्लिप क्लास को प्राप्त करता है)। आप अन्य ओओ-अवधारणाओं का भी उपयोग कर सकते हैं जैसे polymorphism और encapsulation।जहां भी संभव हो, आपको कक्षाओं को अलग करने के लिए अपने कोड को समाहित करना चाहिए। कहें कि क्या आपके प्रोजेक्ट में मूवीक्लिप्स के कुछ अलग-अलग प्रकार हैं, और आप चाहते हैं कि बॉल क्लास सॉकर बॉल, पूल बॉल और बेसबॉल के लिए मूल वर्ग हो। उनमें से प्रत्येक बच्चे कक्षाएं कक्षा वर्ग का विस्तार कर सकती हैं। बड़ी परियोजनाओं के लिए उपयोगी एक और चीज है जो मेरे सभी एप्लिकेशन की घटनाओं को संभालने के लिए एक स्थिर वर्ग बनाना है। चूंकि मैं इसे public static class
के रूप में परिभाषित करता हूं, इसलिए मैं इसे अपने प्रत्येक वर्ग में आयात कर सकता हूं और इसके चर केवल एप्लिकेशन की अवधि के लिए बनाए जाते हैं। यह बेहद उपयोगी हो सकता है।
मैंने एएस 3 के साथ सी ++ की तरह काम करने के प्रयास में कक्षाओं में अपना स्वयं का छद्म विनाशक भी बनाया है। किसी ऑब्जेक्ट के उदाहरण को नष्ट करने से पहले इसे खींचने का सबसे आसान तरीका छद्म-विनाशक को कॉल करना है। मैंने इसे एक आवेदन में स्वचालित रूप से किया है, इसलिए यदि यह किसी के हित में है तो मैं कोड को ट्रैक कर सकता हूं .. लेकिन एएस 3 दृश्यों के पीछे कचरा संग्रह संभालता है और आमतौर पर एक विनाशक की आवश्यकता नहीं होती है, लेकिन शायद मुझे लगता है कि इसकी आवश्यकता नहीं है क्योंकि मैंने बहुत लंबे समय तक एएस 3 में प्रोग्रामिंग से बुरी आदतों को विकसित किया।
व्यक्तिगत रूप से, मुझे लगता है कि आप एएस 3 में ऐप्स विकसित करने का प्रयास करते हैं जैसे कि आप सी ++ में विकसित हो रहे हैं, उतना ही मजेदार हो जाता है और आपका कोड जितना अधिक पुन: प्रयोज्य हो जाता है। इसे जारी रखें .. जल्द ही कोड की गड़बड़ी के बजाय आपको एक्शनस्क्रिप्ट फाइलों की गड़बड़ी होगी .. डबल-धार वाली तलवार का बिट लेकिन व्हाट्सव्स।
+1 उत्तर। मुझे लगता है कि मुख्य बात ध्यान में रखनी है (ओपी पर विचार करना सी ++ से आता है) यह है कि टाइमलाइन कोड बहुत अप्रत्याशित हो सकता है, और हर कीमत पर (दुर्लभ अपवाद के साथ) होना चाहिए। एएस 3 में ऑब्जेक्ट उन्मुख सुविधाओं के साथ, यह भी अनावश्यक है। – Bosworth99
दाएं। मुझे लगता है कि बात यह है कि, जब मैं पहली बार एएस में शामिल हो रहा था, मैंने कुछ बुरी आदतों का निर्माण किया ... और वे मुझे फंस गए क्योंकि वे मुझे परिणाम दे रहे थे। लेकिन हाँ, यह सही तरीके से काम करने का समय है। –
बिल्कुल। फ्लैश आईडीई में टाइमलाइन कोडिंग यहूदी है और उचित वर्ग फ़ाइलों के साथ प्रतिस्थापित किया जाना चाहिए। भी, ऐसा करने में आपको मूवीक्लिप ऑब्जेक्ट्स के बजाय स्लिम स्प्राइट ऑब्जेक्ट्स का उपयोग करना चाहिए। – TheDarkIn1978