Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вызов класса из другого пакета на основании класса объекта. (http://www.flasher.ru/forum/showthread.php?t=180885)

PlutDem 10.06.2012 21:29

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

Deimos747 10.06.2012 21:53

Код AS3:

var y: Y.X = new Y.X();

но лучше избегать одинаковых названий классов, как бы ни хотелось. Из-за этого тяжелее читать программу и появляются глупые ошибки.

Wolsh 10.06.2012 22:04

flash.utils.getQualifiedClassName() вернет строку вида flash.geom::Point
После замены пакета надо получить ссылку на класс. Класс должен быть не только импортирован, но и инициализирован. Иначе компилятор не включит его в сборку. Достаточно просто упомянуть полное имя с пакетом непосредственно в теле класса.
Допустим, у меня есть класс Point в пакете my: my.Point
Код AS3:

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());



Часовой пояс GMT +4, время: 03:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.