2009-12-22 22 views

उत्तर

8

Stage एक loaderInfo संपत्ति है, जो एक url संपत्ति के बारे में जानकारी है कि शामिल है आप देख रहे हैं आप फ्लेक्स में किसी भी प्रदर्शन ऑब्जेक्ट से स्टेज प्रॉपर्टी प्राप्त कर सकते हैं।

ट्रेस (stage.Inter.Info.url);

+0

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

+0

हाँ, फ्लेक्सईवेंट.एपीपीआईसीएशन_ओएमपीएलईटीई ईवेंट प्रेषित होने तक मंच की तरह दिखता नहीं है। –

1

फ्लैश के भीतर से नहीं, afaik। आपको ये किस लिए चाहिए? ऐसा करने का एक बेहतर तरीका हो सकता है।

+0

वैसे मैं एक कस्टम लॉगर क्लास का निर्माण कर रहा हूं, जो सहेजने के लिए लॉग को एक स्क्रिप्ट पर भेज देगा। मैं इसे बना रहा हूं इसलिए मैं इस वर्ग को अन्य परियोजनाओं के साथ पुन: उपयोग कर सकता हूं। तो मैं चाहता हूं कि वर्ग स्वचालित रूप से यह पता लगाने में सक्षम हो कि वह किस परियोजना में चल रहा है, इसलिए यह भी लॉग कर सकता है। –

1

आप loaderInfo.loaderURL उपयोग कर सकते हैं पूर्ण पथ और नाम पाने के लिए की आप SWF एक वर्ग के

उदाहरण:

public class Main extends Sprite { 
private function init():void { 
    removeEventListener(Event.COMPLETE, init); 
    var myUrl:String=loaderInfo.loaderURL; 
    var tmp:Array=myUrl.split("/"); 
    var myName:String=tmp[tmp.length-1].split(".swf")[0]; 
} 

public function Main() { 
    super(); 
    if (stage) 
    init(); 
    else 
    addEventListener(Event.COMPLETE, init, false, 0, true); 
} 
} 
3

बस एक उपयोगी नोट: यदि आप एक एसडब्ल्यूएफ को दूसरे में लोड करते हैं, तो लोड किए गए (आंतरिक) एसडब्ल्यूएफ एक गलत परिणाम लौटाएंगे यदि आप फ़ाइल नाम प्राप्त करने के लिए loaderInfo.url का उपयोग करते हैं। उदाहरण के लिए, कुछ की तरह:

Path/To/Inner.swf

सावधान:

Path/To/Outer.swf/[[DYNAMIC]]/1

बजाय

!

जिसके अनुसार, यहाँ कोड मैं वर्तमान SWF नाम पाने के लिए उपयोग करते हैं:

function SWFName(symbol:DisplayObject):String 
{ 
    var swfName:String; 
    swfName = symbol.loaderInfo.url; 
    swfName = swfName.slice(swfName.lastIndexOf("/") + 1); // Extract the filename from the url 
    swfName = swfName.slice(0, -4); // Remove the ".swf" file extension 
    swfName = new URLVariables("path=" + swfName).path; // this is a hack to decode URL-encoded values 
    return swfName; 
} 
1

चीजें अधिक हाल के संस्करणों में थोड़ी बदल गई हैं तो मैं के लिए एडोब फ्लैश बिल्डर 4.6 एक जवाब दे देंगे (गियर ब्राउज़र में फ्लैश की ओर, लेकिन आपको विचार मिलता है)। कैसे stage के साथ जुड़े loaderInfo वस्तु का उपयोग करने के यह पता लगाने की

<s:Application ... applicationComplete="alertSwfUrl()"> 

<fx:Script> 
<![CDATA[ 
    import mx.core.FlexGlobals; 

    private function alertSwfUrl():void { 
     var a:LoaderInfo = FlexGlobals.topLevelApplication.stage.loaderInfo; 
     ExternalInterface.call('alert', a.url); 
    } 

]]> 
</fx:Script> 

</s:Application 

बाहर चेक LoaderInfo docs