我正在加载一个 .swf 并尝试根据其中的嵌入式 xml 文档查找一个类。我一直在寻找这个问题,每个人都说“你的课程不是公开的”,“你的类名正在干扰你的文档类”,或者“你没有使用相同的 ApplicationDomain”,这些都不是真的. 这是我的代码:
在 CoCMain.as 中,带有 CoCMod.fla:
private function pluginLoadingComplete(e:Event):void {
var testXML:XML = new XML(new e.target.content.description);
trace(e.target.applicationDomain.hasDefinition("blah.blaah.testPlugin.TestMain"));//returns false
trace(ApplicationDomain.currentDomain.hasDefinition("blah.blaah.testPlugin.TestMain"));//returns false
trace(testXML.main[0]);//returns blah.blaah.testPlugin.TestMain
var pluginClass:Class = e.target.applicationDomain.getDefinition(testXML.main[0]) as Class;//error here
}
在 TestMain.as 中,使用 TestMod.fla(这是我正在加载的 swf):
package blah.blaah.testPlugin {
public class TestMain {
public function TestMain():void {
super();
}
public function onEnable():void {
trace("blah");
}
}
}
在 TestMod.fla 的第 1 帧中:
import blah.blaah.testPlugin.TestMain;
[Embed(source = 'main.xml', mimeType = "application/octet-stream")]
const description:Class;
xml文件:
<mod>
<name>Test Mod</name>
<description>Please ignore</description>
<author>Bleachisback</author>
<version>1.0</version>
<main>blah.blaah.testPlugin.TestMain</main>
</mod>
我得到的错误:
ReferenceError: Error #1065: Variable TestMain is not defined.
at flash.system::ApplicationDomain/getDefinition()
at me.bleachisback.cocMod::CoCMain/pluginLoadingComplete()