ReferenceError:错误#1065:未定义变量TestMain

时间:2013-10-22 18:11:42

标签: actionscript-3 flash

我正在加载.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()

2 个答案:

答案 0 :(得分:0)

这听起来像我遇到的类似问题 - 您尝试从描述性名称动态创建实例。

如果没有显式实例化目标类的实例,编译器将不会在构建中包含您的目标类,因此该类不存在(因此您的错误)。所以,你可以添加一行

var xyz:TestMain = new TestMain();

但这种目的却失败了......

您可以使用includes指令强制编译器包含您的类,并包含必须包含的类列表。

答案 1 :(得分:0)

你试过这个吗?

var pluginClass:Class = e.target.applicationDomain.getDefinition(testXML.main.text().toString()) as Class;