2011-03-23 232 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)))(); 

(括号内)