2009-06-21 10 views
6

मेरे पास एक ArtLibrary.swf फ़ाइल है जिसमें सैकड़ों मूवीक्लिप्स क्लास नामों के साथ निर्यात किए गए हैं। मैं इन फिल्मों को कई अलग-अलग फ्लैश फाइलों में उपयोग करने में सक्षम होना चाहता हूं जिन पर मैं काम कर रहा हूं लेकिन मुझे नहीं पता कि कमांड का उपयोग करने और एम्बेड करने के बाद उन्हें सही तरीके से संदर्भित करना है।एएस 3 अलग-अलग वर्गों को अलग-अलग संदर्भित किए बिना बाहरी वर्ग में सभी वर्गों को एम्बेड या आयात करें

निम्नलिखित काम करता है:

[Embed(source="ArtLibrary.swf", symbol="BirdBodyColor_mc")] 
var BirdBodyColor_mc:Class; 

myMC:MovieClip = new BirdBodyColor_mc(); 
addChild(myMC); 

इस उदाहरण में, मैं "मास्टर वर्ग" के अंदर अलग-अलग वर्गों के संदर्भ के लिए कैसे यकीन नहीं है।

[Embed(source="ArtLibrary.swf")] 
var MasterClass:Class; 

myMC:MovieClip = new BirdBodyColor_mc(); 
addChild(myMC.BirdBodyColor_mc); 

उत्तर

4

एक एसडब्ल्यूएफ का उपयोग करने के बजाय, एसडब्ल्यूसी का उपयोग करना बेहतर है। एक एसडब्ल्यूसी बनाने के लिए बस फ्लैश प्रो की प्रकाशित सेटिंग्स में जाएं और फ्लैश टैब पर जाएं और "एसडब्ल्यूसी निर्यात करें" का चयन करें। एसडब्ल्यूसी में एसडब्ल्यूएफ और सभी विशेष जानकारी के साथ एक विशेष मैनिफेस्ट है जिसमें फ्लैश को एसडब्ल्यूएफ में कक्षाओं के बारे में जानना आवश्यक है।

फिर, किसी अन्य प्रोजेक्ट में एसडब्ल्यूसी का उपयोग करने के लिए आप एएस 3 सेटिंग्स (प्रकाशित सेटिंग्स के फ्लैश टैब में भी) पर जाते हैं, लाइब्रेरी पथ टैब पर जाते हैं और अपना एसडब्ल्यूसी (पूर्ण और सापेक्ष पथ दोनों ठीक काम करते हैं) जोड़ते हैं।

ध्यान दें कि यह केवल सीएस 4 या फ्लेक्स में काम करेगा (फ्लेक्स के साथ मुझे काफी यकीन है कि आप अपने प्रोजेक्ट में एसडब्ल्यूसी खींच सकते हैं, लेकिन मैं उस पर जांच करूंगा)।

अब - यदि आप एसडब्ल्यूएफ लोड करना चाहते हैं और रनटाइम पर इसकी संपत्ति का उपयोग करना चाहते हैं, तो यह मोम की एक पूरी तरह से अलग गेंद है। इसके लिए ठीक से काम करने के लिए आपको लोडर क्लास और एप्लिकेशनडोमेन के साथ घूमना होगा ताकि कक्षाएं उचित डोमेन में डाल सकें।

http://www.kirupa.com/forum/showpost.php?p=2123134&postcount=366

4

तो यह CS4 उसके अपने अच्छे के लिए भी स्मार्ट होने का एक मामला है: यहाँ इस विषय पर कुछ अच्छा जानकारी है। चूंकि आप कभी भी स्पष्ट रूप से प्रश्नों में कक्षाओं का जिक्र नहीं करते हैं, इसलिए संकलक संकलन-समय पर निर्धारित कर सकते हैं, इसमें आपके वर्गों में उन वर्गों को शामिल नहीं किया जाता है - इसलिए त्रुटि।

फ्लेक्स में आप इसे कमांड लाइन तर्क के साथ प्राप्त कर सकते हैं, लेकिन यह CS4 के साथ मामला नहीं है। इसके बजाए आप उन वर्गों का स्पष्ट रूप से संदर्भ लेते हैं जिन्हें आप कम से कम एक बार उपयोग करना चाहते हैं ताकि संकलक समझ सके। उदाहरण के लिए, मैंने एक साधारण एसडब्ल्यूसी बनाया जिसमें इसके वर्ग सेट के साथ एक प्रतीक "टेस्टक्रिकल" था। कोड है कि SWC उपयोग किया में मैं निम्नलिखित कोड था और यह ठीक काम किया:

import flash.utils.getDefinitionByName; 

TestCircle; 

var test:MovieClip = new (getDefinitionByName("TestCircle") as Class)(); 

addChild(test); 

आप कल्पना आप एक छोटे से स्क्रिप्ट है कि एक SWC खुला दरार होगा लिख ​​सकता है हो रही है की तरह महसूस करते हैं (यह सिर्फ एक ज़िप फ़ाइल है) , एक्सएमएल मैनिफेस्ट को अंदर पढ़ें और स्वचालित रूप से एक विशेष "includer" क्लास बनाएं। लेकिन जैसा कि वे कहते हैं - मैं इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दूंगा! ;-)

आशा है कि मदद करता है!

+0

"फ्लेक्स में आप इसे कमांड लाइन तर्क के साथ प्राप्त कर सकते हैं" मैं उस कमांड लाइन के लिए यहां देख रहा हूं लेकिन इसे नहीं ढूंढ रहा हूं। इनमें से कौनसा? http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a92.html – vazor

0

तो मैं अभी भी लंबे समय से लिख रहा हूं, मैन्युअल रूप से स्क्रिप्ट के रूप में बनाया गया है जो प्रत्येक आयातित वर्ग का संदर्भ देता है। माना जाता है कि लाइनें एम्बेड विधि से भी कम हैं, एक शब्द भी।

अंत में, मैंने अपना ArtLibrary.fla बनाया और फिर उस फ्लै की लाइब्रेरी के सभी फ़ोल्डरों को कॉपी और पेस्ट किया और मेरे 5 अन्य फ्लै में से प्रत्येक में चिपकाया। मैं swf फ़ाइल संकलित परेशान नहीं किया था। मेरी जरूरतों के लिए जो सबसे प्रभावशाली था।

सभी मदद के लिए बहुत बहुत धन्यवाद। आपके उत्तर सीधे आगे और बहुत विस्तृत थे।

3

आप कल्पना आप एक छोटे से स्क्रिप्ट दरार एक SWC (यह सिर्फ एक ज़िप फ़ाइल है) खोलेगा लिख ​​सकता है, एक्सएमएल प्रकट कि अंदर पढ़ सकते हैं और "Includer" एक विशेष बनाने के लिए हो रही की तरह महसूस करते हैं कक्षा स्वचालित रूप से। लेकिन जैसा कि वे कहते हैं - मैं इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दूंगा! ;-)

कुछ भी जटिल (शुक्रिया!) करने की आवश्यकता नहीं है। शामिल-पुस्तकालय संकलक तर्क स्वचालित रूप से आपके एसडब्ल्यूसी के भीतर से सभी वर्गों को शामिल करेगा, जिससे getDefinitionByName विधि अपेक्षित कार्य करने की अनुमति देगी।

अपने ऐप-config.xml फ़ाइल में (या वैकल्पिक रूप संकलक करने के लिए एक तर्क के रूप सीधे पारित कर दिया):

<include-libraries> 
    <library>path/to/your.swc</library> 
</include-libraries> 

तो फिर तुम सामान्य रूप getDefinitionByName का उपयोग करने के लिए स्वतंत्र हैं।

एचटीएच।

2

FlashDevelop का उपयोग करना यह ठीक करने के लिए बहुत आसान है।

प्रोजेक्ट सूची से अपने शामिल एससीसी पर राइट क्लिक करें। विकल्प चुनें "पुस्तकालय (पूर्ण पुस्तकालय) शामिल करें"।

.. अब आप अपने swc फ़ाइल से एक अनिर्धारित कक्षा प्राप्त करने के लिए getDefinitionByName का उपयोग कर सकते हैं।

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