.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()