在我的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 应用程序,用于“单元测试”该特定功能。
谢谢!亚历
答案 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的更多信息。