获取应用程序以调用其方法

时间:2011-09-12 08:27:45

标签: flex interface flex4 flex4.5

在我的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 应用程序,用于“单元测试”该特定功能。

谢谢!亚历

2 个答案:

答案 0 :(得分:3)

是的确如此:

FlexGlobals.topLevelApplication

虽然我建议您使用事件来避免紧密耦合。

关于接口的问题:使用属性implements

<s:Component ... implements="IClassA,IClassB" ... />

答案 1 :(得分:1)

关于在MXML组件中实现接口,请参阅the following documentation

如何将更改后的数据从弹出窗口传回应用程序,我建议您使用Observer pattern和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组件中触发它。您可以阅读有关实施自定义事件in documentation的更多信息。