我的Flex项目中有一个AS3类:
package system
{
import mx.managers.PopUpManager;
import ui.Eula;
public class Dialogs
{
public function Dialogs(){}
public static function showEula():void {
var eulaWindow:Eula = new Eula;
PopUpManager.addPopUp(eulaWindow,MyMainMXML,true);
}
}
}
MyMainMXML是我的基础MXML文件。它不会让我通过我的班级参考它。我怎么做?编译器错误如下:
1067:将类型Class的值隐式强制转换为不相关的类型flash.display:DisplayObject。
主MXML文件是一个Spark WindowedApplication,所以我认为它是DisplayObjects的一部分。
编辑:
我尝试使用类似下面的FlexGlobals,但它发出错误,上面写着 1118:使用静态类型Object将值隐式强制转换为可能不相关的类型flash.display:DisplayObject。
package system
{
import mx.core.FlexGlobals;
import mx.managers.PopUpManager;
import ui.Eula;
public class Dialogs
{
public function Dialogs(){}
public static function showEula():void {
var eulaWindow:Eula = new Eula;
PopUpManager.addPopUp(eulaWindow,FlexGlobals.topLevelApplication,true);
}
}
}
答案 0 :(得分:1)
您可以从
获得主要的应用程序参考FlexGlobals.topLevelApplication
mx.core.FlexGlobals.topLevelApplication:顶级应用程序对象,无论对象在文档树中的哪个位置执行。此对象的类型为spark.components.Application或mx.core.Application。
答案 1 :(得分:1)
使用FlexGlobals.topLevelApplication返回一个Object类型的对象(是的,我知道,这听起来很红:P)。但是,如果是DisplayObject,则为addPopUp第二个参数。因此,这应该做的伎俩:
PopUpManager.addPopUp(eulaWindow,FlexGlobals.topLevelApplication as DisplayObject,true);
我不是100%确定为什么FlexGlobals.topLevelApplication不返回DisplayObject,可能是一个低级问题。