#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 с доступными методами верхнего уровня.