Получение приложения для вызова его метода - PullRequest
0 голосов
/ 12 сентября 2011

В моем приложении Flex 4.5 у меня есть TitleWindow Settings.mxml , которое выскакивает из PopUpManager.

Как только пользователь изменил некоторые настройки, мне нужно не только сохранитьих для SharedObject, а также для применения их к самому основному приложению - чтобы изменения сразу были видны пользователю.

Например, мне нужно вызвать его метод hideApp (somevalue);

spark.components.Application , похоже, не имеет каких-либо статических / одноэлементных методов, чтобы справиться с этим.

Так как вы это делаете?

И мне также интересно, как объявить, что файл MXML реализует один или несколько интерфейсов?

package {
  public interface Hiddable {
    function hideApp(value:Number):void;
  }
}

Я спрашиваю об этом, потому что помимо основного приложения у меня есть SettingsTest.mxml Приложение в моем проекте для "модульного тестирования" этой конкретной функциональности.

Спасибо!Alex

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Да, это так:

FlexGlobals.topLevelApplication

хотя я бы порекомендовал вам использовать события, чтобы избежать сильной связи.

Что касается вопроса об интерфейсах: используйте атрибут implements

<s:Component ... implements="IClassA,IClassB" ... />
1 голос
/ 12 сентября 2011

О реализации интерфейсов в компонентах MXML см. следующую документацию .

Что касается передачи измененных данных из всплывающего окна в приложение, я рекомендую вам использовать Observerpattern с моделью событий Flash, похожей на следующую:

var myWindow:MyWindow = MyWindow(PopUpManager.createPopUp(this, MyWindow));
myWindow.addEventListener(MyWindowEvent.SUBMIT, myWindowSubmit);

private function myWindow(event:MyWindowEvent):void
{
    // Unsubscribing from events
    var myWindow:MyWindow = MyWindow(event.currentTarget);
    myWindow.removeEventListener(MyWindowEvent.SUBMIT, myWindowSubmit);
    // Changed data is passing with custom event object
    someData = event.someData;
}

И вы должны реализовать свое собственное событие для этого (MyWindowEvent в моем псевдокоде) и запустить его из вашего TitleWindow компонента.Подробнее о реализации пользовательского события вы можете прочитать в документации .

...