Как получить тип переменной? и создать его экземпляр? - PullRequest
2 голосов
/ 16 июля 2009

Я пытаюсь создать функцию, которая открывает окно, но гарантирует, что это же окно еще не открыто. Я хочу быть в состоянии передать ему не-экземплярную переменную или экземплярную переменную, и она работает в любом случае. Если окно уже открыто, оно закрывает его, а затем снова открывает.

Так что мне нужен способ передать переменную типа Window или подкласс, если он есть, и создать экземпляр соответствующего подкласса.

Я ищу что-то вроде этого:

public function openWindowOnce(window:Window):void
{
    if(isOpen(window))
    {
        closeIfOpen(window);
    }
    window = new Window(); /**<-- THIS LINE window can also be a sublcass of window, 
                             *    I want to instatiate the correct sublass,
                             *    I also want to make sure that it is a Window or a
                             *    Sublcass of window before I instatiate it.
                             */ 
    window.open();
}

Спасибо!

1 Ответ

5 голосов
/ 16 июля 2009

Вы можете попробовать использовать комбинацию flash.utils.getDefinitionByName(), flash.utils.getQualifiedClassName() и ClassFactory для достижения результата.

var className:string = getQualifiedClassName(object); //returns the class name    
var classObj:Class = getDefinitionByName(className) as Class; //get a Class object
var factory:IFactory = new ClassFactory(classObj);// get a Class factory    
var newObj:Object = factory.newInstance();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...