Ссылка на родительский MXML в классе AS3? - PullRequest
0 голосов
/ 27 февраля 2012

В моем проекте 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 представляет собой искривленное WindowedApplication, поэтому я предположил, что он является частью объектов DisplayObject.

РЕДАКТИРОВАТЬ:

Я попытался использовать 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);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Использование FlexGlobals.topLevelApplication возвращает вам объект типа Object (да, я знаю, это звучит избыточно: P).Однако addPopUp 2-й параметр, если DisplayObject.Следовательно, это должно сработать:

PopUpManager.addPopUp(eulaWindow,FlexGlobals.topLevelApplication as DisplayObject,true);

Я не уверен на 100%, почему FlexGlobals.topLevelApplication не возвращает DisplayObject, может быть проблемой низкого уровня.

1 голос
/ 27 февраля 2012

Вы можете получить ссылку на основное приложение от

FlexGlobals.topLevelApplication

mx.core.FlexGlobals.topLevelApplication: объект приложения верхнего уровня, независимо от того, где в дереве документа выполняется ваш объект. Этот объект имеет тип spark.components.Application или mx.core.Application.

...