我有一個主要項目,我想另一個項目的SWF文件加載到其中:AS3/Flex界面不兼容,當外部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);
這裏的主類的第二個項目的代碼:
<?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和第二個項目(正在加載的)的一個元素,它是我的自定義類「TextTool」的一個實例,它擴展s:組和實現IModule:
<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>
12:18我已經加載的SWF,我想訪問「myTF」的其中有TextTool實例和ID:
//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時仍然是錯誤的。 爲什麼?
'textModule'表明它實現了什麼嗎?我想知道編譯器是否重命名了一個或兩個以防止內存中的衝突。 – ethrbunny
'textModule'沒有實現IModule,你希望編譯器重命名的是什麼? –