PDA

Просмотр полной версии : Вызов класса из другого пакета на основании класса объекта.


PlutDem
10.06.2012, 21:29
Здравствуйте, есть объект класса X пакета N. Как создать объект класса X пакета Y? Т.е. нужно как то узнать название класса объекта и на основании этого создать объект с таким же названием класса но из другого пакета.

Deimos747
10.06.2012, 21:53
var y: Y.X = new Y.X();
но лучше избегать одинаковых названий классов, как бы ни хотелось. Из-за этого тяжелее читать программу и появляются глупые ошибки.

Wolsh
10.06.2012, 22:04
flash.utils.getQualifiedClassName() вернет строку вида flash.geom::Point
После замены пакета надо получить ссылку на класс. Класс должен быть не только импортирован, но и инициализирован. Иначе компилятор не включит его в сборку. Достаточно просто упомянуть полное имя с пакетом непосредственно в теле класса.
Допустим, у меня есть класс Point в пакете my: my.Point
my.Point; //
....
var p:flash.geom.Point = new flash.geom.Point();
var packName:String = getQualifiedClassName(p);
trace(packName); // flash.geom::Point

var pClass:Class = getDefinitionByName(packName.replace("flash.geom", "my")) as Class;
trace(new pClass());