क्या कोई तरीका है कि मैं प्रोग्राम की रूप से एसएसएफएफ के फ़ाइल नाम का प्रोग्राम नाम निर्धारित कर सकता हूं?फ्लेक्स: स्वयं एसडब्ल्यूएफ फ़ाइल नाम प्राप्त करें?
धन्यवाद!
क्या कोई तरीका है कि मैं प्रोग्राम की रूप से एसएसएफएफ के फ़ाइल नाम का प्रोग्राम नाम निर्धारित कर सकता हूं?फ्लेक्स: स्वयं एसडब्ल्यूएफ फ़ाइल नाम प्राप्त करें?
धन्यवाद!
Stage एक loaderInfo संपत्ति है, जो एक url संपत्ति के बारे में जानकारी है कि शामिल है आप देख रहे हैं आप फ्लेक्स में किसी भी प्रदर्शन ऑब्जेक्ट से स्टेज प्रॉपर्टी प्राप्त कर सकते हैं।
ट्रेस (stage.Inter.Info.url);
फ्लैश के भीतर से नहीं, afaik। आपको ये किस लिए चाहिए? ऐसा करने का एक बेहतर तरीका हो सकता है।
वैसे मैं एक कस्टम लॉगर क्लास का निर्माण कर रहा हूं, जो सहेजने के लिए लॉग को एक स्क्रिप्ट पर भेज देगा। मैं इसे बना रहा हूं इसलिए मैं इस वर्ग को अन्य परियोजनाओं के साथ पुन: उपयोग कर सकता हूं। तो मैं चाहता हूं कि वर्ग स्वचालित रूप से यह पता लगाने में सक्षम हो कि वह किस परियोजना में चल रहा है, इसलिए यह भी लॉग कर सकता है। –
आप 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);
}
}
बस एक उपयोगी नोट: यदि आप एक एसडब्ल्यूएफ को दूसरे में लोड करते हैं, तो लोड किए गए (आंतरिक) एसडब्ल्यूएफ एक गलत परिणाम लौटाएंगे यदि आप फ़ाइल नाम प्राप्त करने के लिए 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;
}
चीजें अधिक हाल के संस्करणों में थोड़ी बदल गई हैं तो मैं के लिए एडोब फ्लैश बिल्डर 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।
धन्यवाद .. इसके अलावा मैं इसे एप्लिकेशन.एप्लिकेशंस.स्टेज.लोडरइन्फो.यूआरएल का उपयोग एनओएन डिस्प्ले ऑब्जेक्ट से प्राप्त करने के लिए भी कर सकता हूं, अगर आप एप्लिकेशन से पहले इसे एक्सेस करने का प्रयास करते हैं तो यह एक त्रुटि देता है। क्रिकेशन पूर्ण। –
हाँ, फ्लेक्सईवेंट.एपीपीआईसीएशन_ओएमपीएलईटीई ईवेंट प्रेषित होने तक मंच की तरह दिखता नहीं है। –