Как мне ссылаться на WindowedApplication изнутри созданного мной класса?

#apache-flex #actionscript

#apache-flex #actionscript

Вопрос:

Я использую Flex 4.5, и я импортировал пользовательский класс, который я написал, в основной файл MXML.

Внутри файла класса я хочу иметь возможность создавать, TitleWindow используя PopUpManager , вот так:

 package classes {
    import components.*; // My custom components
    import mx.managers.PopUpManager;

    public class SomeClass {
        public function showPopUp():void {
            PopUpManager.createPopUp(this,NewProjectPrompt,true);
        }
    }
}
  

NewProjectPrompt это пользовательский компонент, который я создал. Компилятор выдает мне следующую ошибку:

 1067: Implicit coercion of a value of type classes:Project to an unrelated type flash.display:DisplayObject.
  

Это потому, что this не указывает на WindowedApplication . Как мне сделать так, чтобы первый параметр в .createPopUp() указывал на WindowedApplication ?

Ответ №1:

этот код работает!

общедоступная функция showPopup(){
PopUpManager.createPopup(FlexGlobals.topLevelApplication как DisplayObject,NewProjectPrompt, true); }

Комментарии:

1. Спасибо!! Это отлично сработало. 😀 Однако, в качестве дружеского предложения, было бы неплохо, если бы вы объяснили немного подробнее. Я нашел хорошую статью на сайте Adobe, в которой подробно объясняется, что вы говорите (для всех, у кого есть такой же вопрос): help.adobe.com/en_US/flex/using /…

Ответ №2:

Если ваш файл WindowedApplication называется «MyApp.mxml», то вы должны написать ссылку из компонента на него следующим образом:

 MyApp(this.parentApplication)
  

Это вернет фактическое WindowedApplication, и вы можете вызвать его общедоступные методы или вставить его в переменную, если потребуется.

Комментарии:

1. Я пробовал это, но Flex 4.5 не распознает parentApplication . Самое близкое совпадение было parentObject , но оно не сработало.

2. Вы можете использовать переменную, подобную этой var myApp:MyApp = FlexGlobals.topLevelApplication as MyApp; , если вам нужно получить к ней доступ как к WindowedApplication с доступными методами верхнего уровня.