繁体   English   中英

指示常规Flex(非AIR)应用程序中的窗口处于“活动”状态

[英]Indicating that a window is “active” inside a regular Flex (not AIR) application

我有一个Flex 4应用程序(不是AIR),该应用程序具有一些浮动窗口,这些窗口实际上充当无模式对话框。

现在,如果其中两个同时打开,则它们将充当活动的兄弟姐妹,并且它们的控件已启用以进行用户交互。

现在,我需要维护应用程序中哪个是“活动的”概念。 我不想/禁用/非活动的,以使它们模糊或阻止其控件上的输入。

我基本上想复制基本的OS窗口管理:当您单击或在一个窗口中键入控件时,它位于最前面,并且其标题栏看起来是“活动的”,而其他标题栏看起来是“不活动的”。 就像在Windows中使用一堆资源管理器一样。

有人可以帮我找寻方法吗?

假设您的弹出窗口扩展了UIComponent,则您应该能够侦听FocusIn事件以使窗口处于活动状态,而focusOut则可以使窗口处于非活动状态。

现在,容器通常不调度焦点事件。 但是容器的孩子会。 而且自焦点事件泡泡起,您可以在弹出窗口中收听它们。

就我个人而言,我将使用我们称为介体的介面来处理这个问题……本质上是单例UI控制器,以及稍微自定义的组件和自定义外观。 在Popup上,每个窗口都向中介程序注册自己,因此,中介程序知道所有打开的窗口,在关闭时每个窗口都会自行注销,OnFocusIn在通知此事件的每个组件上通知中介程序,中介程序彼此调用一个方法面板进行模糊处理或其他操作。

自定义组件可以扩展TitleWindow并添加属性IsActiveWindow,然后自定义外观可以基于此属性更改其外观。

对于专业点,请使用RobotLegs将对中介的引用注入到组件中。

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM