Преобразовать строку в класс для TitleWindow - PullRequest
0 голосов
/ 21 сентября 2011

Я не знаю, возможно ли это, я извлекаю имена для TitleWindows из моей базы данных в виде строк.

Затем из моего основного приложения я должен запустить TitleWindow. Поэтому в моей функции мне нужно преобразовать имя TitleWindow, которое является строкой, в класс, потому что PopUpManager принимает класс. Ниже мой код.

При запуске моего приложения и попытке запустить TitleWindow я получаю сообщение об ошибке:

Implicit coercion of a value of type String to an unrelated type Class.

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

public function getScreen(screenName:String):void
{
    var screen_Name:Class = new Class();
    screen_Name = screenName;

    var popUpWindow:TitleWindow = PopUpManager.createPopUp(this, screen_Name, false) as TitleWindow;
    PopUpManager.centerPopUp(popUpWindow);
}

1 Ответ

0 голосов
/ 23 сентября 2011

Мне пришлось сделать что-то очень похожее в последнее время.Вот функция, которую я написал для этого:

    //You have to provice the package signature
    private var viewPackage:String = "org.bishop";

    //In my case, event.type is the name of a class
    var className: String = viewPackage + "." + event.type;
                try{
                    var classRef:Class = getDefinitionByName(className) as Class;

                    viewNavigator.pushView(classRef);               
                }   
                catch(e:ViewError){
                    trace(e.message);
                    logger.debug(e.message);
                }

Примечание: для того, чтобы класс был создан правильно, вам нужно будет включить оба оператора импорта:

import org.bishop.Login;

, а такжеобъявите переменную класса в коде следующим образом:

Login;

в противном случае классы будут недоступны для создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...