0

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

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

有人可以给我一些关于停靠或处理窗口移动事件的建议吗?谢谢。

4

2 回答 2

1

由于这出现在谷歌搜索中,我觉得我们应该为此添加更多信息。

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

AFAIK 这不是在框架或组件中解决的问题,但应该很容易自己添加。我认为该过程将如下所示。

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

要取消粘合弹出窗口,请删除主面板拖动的事件侦听器,应该这样做。

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

于 2010-01-08T02:04:28.447 回答
0

如果您在谈论浏览器窗口,您将不得不使用 javascript。Flex(或 Flash)与浏览器对话的能力非常有限,无法进行任何此类对接。

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

于 2009-11-14T03:29:53.040 回答