2011-03-23 228 views
1

如何從類實例中實例化另一個類對象?ActionScript - 從實例實例化新對象?

在下面的代碼(這是行不通的)我想函數返回一個新的類實例根據傳遞的參數的類。換句話說,我希望函數返回一個新實例MySprite,而無需致電new MySprite();

var mySprite:Sprite = new MySprite(); 
var anotherSprite:Sprite = makeAnotherSprite(mySprite); 

function makeAnotherSprite(instance:Sprite):Sprite 
    { 
    return new getDefinitionByName(getQualifiedClassName(instance)); 
    } 

回答

1

一種替代方式,而不是你想要做的,但應該工作。

function makeAnotherSprite(instance:Sprite):Sprite 
{ 
var myClass:Class = Object(instance).constructor; 
return new myClass(); 
} 
+0

不錯!我忘了所有關於使用構造函數屬性。這比使用flash.utils靜態函數要乾淨得多。謝謝! – TheDarkIn1978 2011-03-23 14:40:15

3

您的解決方案几乎奏效。這裏是更正後的功能:

function makeAnotherSprite(instance:Sprite):Sprite 
{ 
    var qualifiedClassName:String = getQualifiedClassName(instance); 
    var clazz:Class = getDefinitionByName(qualifiedClassName) as Class; 
    return new clazz(); 
} 
+0

權上。謝謝。 – TheDarkIn1978 2011-03-23 14:32:24

0

作出這樣的:

return new (getDefinitionByName(getQualifiedClassName(instance)))(); 

(括號內)