ActionScript - создать новый объект из экземпляра? - PullRequest
1 голос
/ 23 марта 2011

как я могу создать экземпляр другого объекта класса из экземпляра класса?

в приведенном ниже коде (который не работает) я хотел бы, чтобы функция возвращала новый экземпляр класса на основе класса переданного аргумента. другими словами, я хочу, чтобы функция возвращала новый экземпляр MySprite без необходимости вызова new MySprite();.

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

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

Ответы [ 3 ]

3 голосов
/ 23 марта 2011

Ваше решение почти сработало.Вот исправленная функция:

function makeAnotherSprite(instance:Sprite):Sprite
{
    var qualifiedClassName:String = getQualifiedClassName(instance);
    var clazz:Class = getDefinitionByName(qualifiedClassName) as Class; 
    return new clazz();
}
1 голос
/ 23 марта 2011

Альтернативный способ, чем то, что вы пытаетесь сделать, но должно работать.

function makeAnotherSprite(instance:Sprite):Sprite
{
var myClass:Class = Object(instance).constructor; 
return new myClass();
}
0 голосов
/ 23 марта 2011

Сделать так:

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

(Скобки)

...