Можно ли пристыковать нормальную панель к всплывающей панели во флексе?

Я новичок в Flex, прямо сейчас я хочу создать стыковку панели с всплывающей панелью в моем гибком приложении, например, окно списка воспроизведения Winamp может стыковаться с главным окном. но я не нашел ничего полезного в стыковке во флексе, кто-нибудь может дать мне несколько предложений?

Я проследил PopUpManager, но я не нашел никаких доступных интерфейсов или событий о перемещении всплывающего окна, я думаю, что его дизайн не должен быть таким плохим.

Кто-нибудь может дать мне несколько советов по стыковке или обработке события перемещения окна? Спасибо.


person Community    schedule 14.11.2009    source источник


Ответы (2)


Поскольку это появляется при поиске в Google, я считаю, что мы должны добавить к нему дополнительную информацию.

В настоящее время существует несколько платформ стыковки для Flex, например DockableFlex и FlexMDI. Также есть DockAreaFX - но это 250 долларов США и кажется, выходит за рамки того, что вы пытаетесь сделать. У всех есть свои особенности, но я думаю, ваш вопрос больше о том, как приклеить один контейнер к другому, чтобы, когда один двигался, другой двигался вместе с ним.

AFAIK это не то, что было решено в рамках или компоненте, но должно быть достаточно легко добавить самостоятельно. Я думаю, что процесс будет примерно таким.

  • Используйте PopupManager для создания рассматриваемого всплывающего окна
  • Внутри рассматриваемого всплывающего окна добавьте стандартную функциональность перетаскивания и добавьте прослушиватель событий для OnDrag, чтобы выполнить некоторую проверку привязки
  • Внутри прослушивателя событий OnDrag проверьте свою близость к другой панели, если вы закрылись, просто зафиксируйте положение всплывающего окна по осям x и y, чтобы оно соприкасалось с ним.
  • Добавьте прослушиватель событий во всплывающее окно для события завершения перетаскивания. Внутри этого события OnDragComplete добавьте прослушиватель событий на панель, с которым вы хотите убедиться, что он перемещается в событие перетаскивания для этой панели - OnLockedPanelDrag.
  • Внутри этого прослушивателя событий просто обновите свои координаты x и y на основе панели.

Чтобы отклеить всплывающее окно, удалите прослушиватели событий для основных панелей. Перетащите, и это должно сработать.

Есть лучшие решения, связанные с более сильными архитектурными шаблонами, но это должно указать любому в правильном направлении.

person JTtheGeek    schedule 08.01.2010

Если вы говорите об окнах браузера, вам придется использовать javascript. Flex (или flash, если на то пошло) имеет очень ограниченную способность взаимодействовать с браузером и не сможет выполнять такую ​​стыковку.

Вот хорошее введение в межоконную коммуникацию в javascript: http://www.infimum.dk/HTML/JSwindows.html

person greggreg    schedule 14.11.2009
comment
Спасибо за ваш ответ. Это моя вина, окно, которое я имел в виду, это что-то вроде Panel / TitleWindow, созданное PopUpManager, а не собственное окно браузера. - person ; 16.11.2009