2

主なプロジェクトがあり、別のプロジェクトの swf をそこにロードしたい:

//loader code in Main class of main project
var url:URLRequest = new URLRequest("../src/components/TextTool.swf");      
var ttWrapper:UIComponent = new UIComponent();
var ldr:SWFLoader = new SWFLoader(); 
var context:LoaderContext   = new LoaderContext();
if (Security.sandboxType == Security.LOCAL_TRUSTED) {
context.applicationDomain   = new ApplicationDomain(ApplicationDomain.currentDomain);
    }         ldr.source = "../src/components/TextTool.swf";
        ldr.loaderContext = context;
        ldr.addEventListener(Event.COMPLETE, onLoadComplete);
        ldr.load();     
        can.addElement(ldr);

2 番目のプロジェクトの Main クラスのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:stark="stark.*" name="textModule" >    
        <stark:TextTool name="myTF" id="myTF"></stark:TextTool>
    </s:Application>

これで、両方のプロジェクトにインターフェイス ファイルが含まれます。同じコードの IModule と、s:Group を拡張して実装するカスタム クラス「TextTool」のインスタンスである 2 番目のプロジェクト (ロードされるプロジェクト) の要素です。 Iモジュール:

<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx" width="400"
        xmlns:com="src"
        height="130" creationComplete = "initText()" implements="IModule"></s:Group>

swf をロードしたらすぐに、"myTF" の ID を持つ TextTool インスタンスにアクセスしたいと思います。

//Code in the main class of the main project
    trace(getQualifiedClassName(mySwf.getChildByName('textModule')['myTF']));
    trace(mySwf.getChildByName('textModule')['myTF'] is IModule);
    //output:

    //stark::TextTool
    //false

上で述べたように、私は両方のプロジェクトに同じコードのインターフェイスを持ち、メイン クラスへの相対パスは同じで、myTF は IModule を拡張します。swf がロードされた後、正しい要素を取得しますが、IModule を実装しているかどうかを確認すると、まだ false になります。なんで?

4

2 に答える 2

0

Application実装のテスト中です

trace(mySwf.getChildByName('textModule') is IModule);

追加するのを忘れていたと思います['myTF']

trace(mySwf.getChildByName('textModule')['myTF'] is IModule);
于 2012-10-19T16:50:48.690 に答える
0

You're loading both into different ApplicationDomains, so whichever loads first wins. Try loading them into the same ApplicationDomain.

于 2012-10-20T00:51:28.950 に答える