मैं वर्तमान में एक मानक एएस 3 आवेदन, और एक एआईआर आवेदन दोनों से बाहरी एसडब्ल्यूएफ फाइलों को लोड करने के साथ प्रयोग कर रहा हूं। ऐसा लगता है कि एआईआर एप्लीकेशन फ़्लैश प्लेयर द्वारा संचालित एक मानक एसडब्ल्यूएफ के समान तरीके से कार्य नहीं करता है।लोडर कॉन्टेक्स्ट और एप्लीकेशनडोमेन एडोब एयर के साथ बदलता है?
documentation के अनुसार, applicationDomain
LoaderContext
की संपत्ति एआईआर एप्लिकेशन में भी उपयोग योग्य है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।
मैं निम्नलिखित कोड है:
package {
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
public class Invoker extends Sprite
{
private var _ldr : Loader;
public function Invoker()
{
_ldr = new Loader();
_ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onChildOneComplete);
var ldrC : LoaderContext = new LoaderContext(false,
new ApplicationDomain(ApplicationDomain.currentDomain)
);
_ldr.load(new URLRequest("otherSwf.swf"), ldrC);
}
private function onChildOneComplete(e : Event) : void
{
var c1ad : ApplicationDomain = (e.target as LoaderInfo).applicationDomain;
var inad : ApplicationDomain = ApplicationDomain.currentDomain;
trace("Child One parentDomain : " + c1ad.parentDomain);
trace("Invoker parentDomain : " + inad.parentDomain);
trace("Child One has Invoker : " + c1ad.hasDefinition("Invoker"));
trace("Invoker has Invoker : " + inad.hasDefinition("Invoker"));
}
}
}
SWF फ़ाइल के रूप में इस कोड संकलन और फ़्लैश प्लेयर के साथ इसे शुरू करने से करता है इस उत्पादन है, जो सही लगता है:
Child One parentDomain : [object ApplicationDomain]
Invoker parentDomain : null
Child One has Invoker : true
Invoker has Invoker : true
लेकिन एक ही कोड एक एआईआर अनुप्रयोग के रूप में एक अलग आउटपुट करता है:
Child One parentDomain : null
Invoker parentDomain : null
Child One has Invoker : false
Invoker has Invoker : true
दस्तावेज के अनुसार एन, पहला आउटपुट (फ्लैश प्लेयर के साथ एक एसडब्ल्यूएफ का उपयोग करके, और एआईआर एप्लीकेशन नहीं) सही है। साथ ही, इस स्निपेट के साथ खेलना और अन्य लोगों को संभावित कॉन्फ़िगरेशन (जैसे new ApplicationDomain(null)
, या ApplicationDomain.currentDomain
) में एप्लिकेशन डोमेन को बदलना एसडब्ल्यूएफ के साथ प्रलेखन कहता है, लेकिन एआईआर एप्लिकेशन के आउटपुट को नहीं बदलता है।
कोई संकेत क्यों एआईआर लोडर संदर्भ में पास किए गए एप्लिकेशन डोमेन को अनदेखा कर रहा है? इस विशेष मुद्दे के बारे में कोई दस्तावेज?
बहुत बहुत धन्यवाद।
ध्यान दें कि आप [allowCodeImport] का उपयोग करने के रूप में @pigiuz –
से कहा कि मैं समय इसे ध्यान में करने के लिए अपने जवाब संपादित किया है की आवश्यकता होगी। धन्यवाद! – Tyn