2011-02-17 99 views
0

有沒有辦法生成一個類的實例,該類的實例基於該類的名稱根據類名創建實現接口的類的實例?

我想:

var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement; 
var m:IMovement = new ClassReference as IMovement; 
trace("startup..." + m); 

- 但是我收到一條錯誤消息的ReferenceError:錯誤#1065(OuterSpaceMovement)沒有定義。

我有一個實現相同的接口(IMovement)幾類,但我需要能夠產生這些類的新實例,然後通過這些實例的數據類型(IMovement數據類型)的其他類...

於是我嘗試:

var ClassReference:Class = getDefinitionByName("OuterSpaceMovement") as Class; 
var m:IMovement = new ClassReference() as IMovement; 

,這似乎並沒有工作...但下面

var m:IMovement = new OuterSpaceMovement(); 

呢?

回答

1

你的ClassReference應該是一個Class類型,所以:

var ClassReference:Class = getDefinitionByName("movement.OuterSpaceMovement") as Class; 
var m:IMovement = new ClassReference() as IMovement; 

這應該工作,除非有與類定義一個問題(必須包括在生成,所以你必須在導入OuterSpaceMovement至少一次在你的程序中的某處,或者明確地將它包含在你的編譯設置或編譯器選項中)。

而且,當然,OuterSpaceMovement必須實現IMovement。 ;)

+0

謝謝,這確實有幫助,但我仍然收到「未定義的」錯誤消息...添加了上面的一些細節。任何人都可以解釋什麼區別? – redconservatory 2011-02-17 16:50:13