我有一个Flex 4应用程序(不是AIR),它有一些浮动窗口,基本上就像无模式对话框一样。
现在,如果其中两个是同时打开的,它们就像兄弟姐妹一样,它们都是活动的,并且其控件已启用以进行用户交互。
我现在需要保持一些在应用程序中“活跃”的概念。我不想/禁用/非活动的,以便模糊或阻止对其控件的输入。
我基本上想要复制基本的操作系统窗口管理:当你在一个窗口中单击或键入控件时,它会显示在前面,其标题栏看起来“活动”,其他窗口看起来“不活动”。就像Windows中的一群探险家一样。
任何人都可以提出一个方法吗?
答案 0 :(得分:0)
假设您的弹出窗口扩展了UIComponent,您应该能够收听FocusIn事件以使您的窗口处于活动状态,并focusOut使您的窗口处于非活动状态。
现在容器通常不会发送焦点事件;但容器的孩子会。由于焦点事件泡沫,您可以将其作为弹出窗口的一部分进行监听。
答案 1 :(得分:0)
就个人而言,我会用我们称之为Mediator的方式处理这个问题......本质上是一个单独的UI控制器,以及一个稍微自定义的组件和自定义皮肤。在Popup上,每个窗口都使用Mediator注册自己,因此调解器知道所有打开的窗口,关闭每个取消注册本身,OnFocusIn在每个组件上通知调解器此事件,调解器调用其他方法面板来模糊或等等。
自定义组件可以扩展TitleWindow并添加属性IsActiveWindow,然后自定义外观可以根据此属性更改它的外观。
对于专业点,使用RobotLegs将介体的引用注入到组件中。
祝你好运!