我不知道这是否可行,我将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);
}
答案 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;
否则将无法创建类。