是否可以将普通面板停靠在flex中的弹出式面板上?

时间:2009-11-14 03:19:01

标签: flex popup dock

我是flex的新手,现在我想在我的flex应用程序中创建一个与弹出面板对接的面板,就像Winamp的播放列表窗口可以停靠到主窗口一样。但我没有找到任何有用的Flex对接,有人可以给我一些建议吗?

我已经跟踪了PopUpManager,但是我没有找到任何关于弹出窗口移动的可用界面或事件,我认为它的设计不应该那么糟糕。

有人可以就停靠或处理窗户移动事件给我一些建议吗?感谢。

2 个答案:

答案 0 :(得分:1)

由于Googles搜索出现了这种情况,我觉得我们应该为此添加更多信息。

目前有一些适用于flex的停靠框架,例如DockableFlexFlexMDI。还有一个DockAreaFX - 但是250美元,似乎超出了你想要做的范围。它们都有自己的特点,但我认为你的问题更多的是关于如何将一个容器粘在另一个容器旁边,这样当一个容器移动时,另一个容器随之移动。

AFAIK这不是在框架或组件中解决的问题,但应该很容易自行添加。我认为这个过程会像下面这样。

  • 使用PopupManager创建问题的弹出窗口
  • 在有问题的Popup中添加标准的Drag功能,并为OnDrag添加一个事件监听器来执行一些检查以进行捕捉
  • 在OnDrag事件监听器内部,检查您与其他面板的接近程度,如果您关闭,只需捕捉弹出窗口的x和y位置,使其与其对接。
  • 在弹出窗口中为“拖动完成事件”添加事件侦听器。在此OnDragComplete事件中,向Panel添加事件侦听器,以确保它随之移动到该Panel的Drag事件 - OnLockedPanelDrag。
  • 在此事件监听器内部,只需根据面板更新您的x和y坐标。

要取消粘贴弹出窗口,请删除主面板拖动的事件侦听器,并且应该执行此操作。

有更好的解决方案涉及更强的架构模式,但这应该指向任何人正确的方向。

答案 1 :(得分:0)

如果您正在谈论浏览器窗口,那么您将不得不使用javascript。 Flex(或闪存)具有非常有限的与浏览器通信的能力,并且无法进行任何此类对接。

这是javascript中对跨窗口通信的一个很好的介绍:http://www.infimum.dk/HTML/JSwindows.html