2012-02-18 107 views
1

我试图初始化一个类,基于字符串和数字的串联。 我所有的课程都是公开的。动态类初始化AS3

这是我的代码:

public function setCurrentPath(pathNumber:String) 
    { 
     var pth_class:Class = getDefinitionByName('Pth'+pathNumber) as Class; 
     var pth:MovieClip = new pth_class(); 
     addChild(pth) 
     pth.getXY(); 


    } 

所以I'm得到错误#1065。

任何帮助?

是的,我有在我的类文件导入flash.utils。*

+0

我觉得我得到的错误'var pth_class:Class = getDefinitionByName('Pth'+ pathNumber)作为Class;'是所有问题 – 2012-02-18 17:04:59

+0

如果我跟踪(“Pth”+ pathNumber)我得到'Pth1'它是一个字符串不是类 – 2012-02-18 17:11:10

回答

2

是您pth_class变空?

如果是这样,有一对夫妇的原因,这可能是这种情况:

1)你没有输入你的类的正确的完全限定类名。例如com.myClasses.Pth1

2)

如果你instanciating类动态像这样并没有其他“正规”参考类(如等等=新PTH1( )),那么“Pth1”类将不会包含在编译过程中。

要解决这个问题,我认为你可以提供参数,编译器,迫使它来编译这些类也可以手动在您现有的代码对它们的引用:

p1:Pth1; 
p2:Pth2; 
+0

仍然没有工作 – 2012-02-18 17:19:06

+1

如果我使用trace(getDefinitionByName(“Pth1”))我得到“Pth1 “班级。 如果我使用trace(getDefinitionByName(“Pth”+ pathNumber))我得到错误。 我正在将字符串'1'传递给pathNumber。 – 2012-02-18 17:29:28

+0

我得到它的参数必须是一个数字而不是一个字符串。所以我传递'1'pathNumber(一个字符串),所以我转换为数字,它的作品:)。 – 2012-02-18 17:33:07