将String转换为TitleWindow的类

时间:2011-09-21 14:11:25

标签: flex4 popup

我不知道这是否可行,我将TitleWindows的名称从数据库中拉为字符串。

然后从我的主应用程序中我必须启动TitleWindow。所以在我的函数中,我需要将TitleWindow的名称转换为Class,因为PopUpManager接受一个Class。以下是我的代码。

启动我的应用程序并尝试启动TitleWindow时,我收到错误:

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

我不想在PopUpManager中硬编码popUp的名称,这就是我这样做的原因。有办法解决这个问题吗?

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 :(得分:0)

我最近必须做一些非常相似的事情。这是我写的功能:

    //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语句:

import org.bishop.Login;

并在代码中声明类的变量,如下所示:

Login;

否则将无法创建类。