现在位置: 首页 > 博客文章 > 电脑相关 > IT开发 > 开发语言 > Flex > 正文
Flex与ActionScriput3.0编程之PopupManager
2014年06月08日 17:14:30 Flex ⁄ 共 1310字 暂无评论 ⁄ 被围观 1,846次

一、创建一个窗口。

1. 先自定义一个TitleWindow组件DefTitleWindow.mxml。

有个需要注意的地方是,DefTitleWindow 组件本身可以定义关闭自己的方法。

Code   ViewPrint
  1. close="titlewindow1_closeHandler(event)"
  2. protected function titlewindow1_closeHandler(event:CloseEvent):void
  3. {
  4.     PopUpManager.removePopUp(this);
  5. }

 

关闭窗口也可以在主窗口中添加监听。

Code   ViewPrint
  1. defTitleWindow.addEventListener(CloseEvent.CLOSE, defTitleWindow_closeHandler);
  2. /**
  3.  * 窗口关闭调用方法
  4.  */
  5. private function defTitleWindow_closeHandler(event:CloseEvent):void {
  6.     PopUpManager.removePopUp(defTitleWindow);
  7. }

 

但在模态模式下,弹出多个窗口后,前者可以一一关闭窗口,而后者只能关闭一个,然后监听失效。

2. 可以有两种方式弹出窗口,分别是 PopupManager 的 addPopUp() 方法和 createPopUp() 方法。

Code   ViewPrint
  1. private var defTitleWindow:DefTitleWindow;
  2. defTitleWindow = new DefTitleWindow();
  3. /**
  4.  * 在主程序中添加一个自定义窗口
  5.  * defTitleWindow 需弹出的目标窗口
  6.  * this 主窗口
  7.  * false 模态标记(true表示模态,弹出窗口后背景内容被屏蔽;false表示非模态,背景一直未屏蔽)
  8.  */
  9. PopUpManager.addPopUp(defTitleWindow, thisfalse);

 

Code   ViewPrint
  1. /**
  2.  * 在主程序中添加一个自定义窗口
  3.  * this 主窗口
  4.  * DefTitleWindow 需弹出的目标窗口类名
  5.  * true 模态标记(true表示模态,弹出窗口后背景不可点;false表示非模态,背景一直可点)
  6.  */
  7. defTitleWindow2 = DefTitleWindow(PopUpManager.createPopUp(this, DefTitleWindow, true));

 

二、窗口的拖动功能

组件都具有 isPopUp 属性来决定是否可以拖动,弹出的窗口是否需要拖动,只需要设置该属性即可,但前提是这些组件都是基于 Panel 或者 TitleWindow 的,如果是基于Canvas的组件,则该属性不起作用。要想实现拖动,必须手动监听MOUSE_DOWN 事件。

这样一来,拖动问题是解决了,但程序中往往会有很多按钮,如果都这样实现拖动,那么监听就会变得特别多,代码也很乱,所以最好的方式,还是写一个通用的拖动类,调用其自定义的拖动函数即可。

给我留言

留言无头像?