2012-02-18 105 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