flex:弹出一个能拖动的canvas!
2009-10-31 12:12
148 查看
在flex里,如果我们需要弹出一个窗口,经常选择的弹出组件是TitleWindow。
![](http://images.cnblogs.com/cnblogs_com/orchid/dragableCanvas11.png)
可是这个TitleWindow的样式过于呆板了,看久了难免会视觉疲劳,所以我宁愿弹出的一个自定义的Canvas。弹出一个Canvas是很容易的事情,只要把PopUpManager.createPopUp()方法的第二个参数改成你要弹出的组件类名就可以了。可是要做出一个功能齐全的弹出窗口还需要的解决几个问题:1,关闭按钮 2能够拖动。如果还想有的话,还可以有最大化和最小化按钮,弹出效果等。
关闭按钮的问题很好解决,只要加个能点击的东西(比如Button),在点击的时候调用PopUPManager的removePopUp()方法即可。
能够像TitleWindow一样能够在窗口里自由拖动它该如何实现呢?
我想在sdk的TitleWindow的源代码里应该有答案。先打开帮助文档,浏览一下TitleWindow的属性和方法。我找到了isPopUp属性和startDragging和stopDragging方法 ,哈哈,我想就是它们了。isPopUp是UIComponent的属性,startDragging和stopDragging方法是继承自Panel的。所以打开Panel的源文件吧!
(panel的源文件在这里:D:\Program Files\Adobe\Flex Builder 3\sdks\3.3.0.4852\frameworks\projects\framework\src\mx\containers,其中D:\Program Files\Adobe\Flex Builder 3是你flex builder的安装路径)
打开Panel.as,搜索startDragging这个关键字 ,然后顺着这个函数找下去你就会找到使TitlePanel能够拖动的函数了。嘻嘻。
下面就是能够使TitleWindow(它继承自Panel)能够拖动的思路:
当点击标题栏时,触发了MouseDown事件,在事件处理函数(titleBar_mouseDownHandler)里调用startDragging方法,在startDragging里又加了三个监听函数,监听鼠标活动,当鼠标移动时(systemManager_mouseMoveHandler)移动组件,鼠标离开时stropDragging。
照着这个思路你可以自己写代码,也可以直接把这部分考到你的自定一组件里去。
下面是我自定义的基于Canvas的弹出组件:
![](http://images.cnblogs.com/cnblogs_com/orchid/dragableCanvas2.png)
下面是这个组件的源代码:/Files/orchid/codesource.rar
与大家共同学习吧!
![](http://images.cnblogs.com/cnblogs_com/orchid/dragableCanvas11.png)
可是这个TitleWindow的样式过于呆板了,看久了难免会视觉疲劳,所以我宁愿弹出的一个自定义的Canvas。弹出一个Canvas是很容易的事情,只要把PopUpManager.createPopUp()方法的第二个参数改成你要弹出的组件类名就可以了。可是要做出一个功能齐全的弹出窗口还需要的解决几个问题:1,关闭按钮 2能够拖动。如果还想有的话,还可以有最大化和最小化按钮,弹出效果等。
关闭按钮的问题很好解决,只要加个能点击的东西(比如Button),在点击的时候调用PopUPManager的removePopUp()方法即可。
能够像TitleWindow一样能够在窗口里自由拖动它该如何实现呢?
我想在sdk的TitleWindow的源代码里应该有答案。先打开帮助文档,浏览一下TitleWindow的属性和方法。我找到了isPopUp属性和startDragging和stopDragging方法 ,哈哈,我想就是它们了。isPopUp是UIComponent的属性,startDragging和stopDragging方法是继承自Panel的。所以打开Panel的源文件吧!
(panel的源文件在这里:D:\Program Files\Adobe\Flex Builder 3\sdks\3.3.0.4852\frameworks\projects\framework\src\mx\containers,其中D:\Program Files\Adobe\Flex Builder 3是你flex builder的安装路径)
打开Panel.as,搜索startDragging这个关键字 ,然后顺着这个函数找下去你就会找到使TitlePanel能够拖动的函数了。嘻嘻。
下面就是能够使TitleWindow(它继承自Panel)能够拖动的思路:
当点击标题栏时,触发了MouseDown事件,在事件处理函数(titleBar_mouseDownHandler)里调用startDragging方法,在startDragging里又加了三个监听函数,监听鼠标活动,当鼠标移动时(systemManager_mouseMoveHandler)移动组件,鼠标离开时stropDragging。
照着这个思路你可以自己写代码,也可以直接把这部分考到你的自定一组件里去。
下面是我自定义的基于Canvas的弹出组件:
![](http://images.cnblogs.com/cnblogs_com/orchid/dragableCanvas2.png)
下面是这个组件的源代码:/Files/orchid/codesource.rar
与大家共同学习吧!
相关文章推荐
- 让Flex控件 Canvas实现弹出窗口并拖动
- Flex控制弹出窗口拖动范围示例代码
- Flex中如何利用PopUpButton控件创建一个弹出TitleWindow的例子
- Flex中如何利用PopUpButton控件创建一个弹出TitleWindow的例子
- 一个非常好用的可拖动的jquery弹出层
- Flex中通过isPopUp属性创建一个不可拖动TitleWindow的例子
- 一个不错的可拖动层遮罩加ALPHA滤镜(点击弹出后背景变浅色,信息提示框效果)
- Flex拖拽-Canvas容器里拖动Box
- flex4 控制弹出窗口的拖动范围
- 一个不错的可拖动层遮罩加ALPHA滤镜(点击弹出后背景变浅色,信息提示框效果)
- jquery封装了一个简洁轻巧的可拖动可自定义样式的纯div+css带遮罩层的仿模态弹出框
- 纯CSS实现圆角、可拖动的一个DIV弹出层
- 一个不错的可拖动层遮罩加ALPHA滤镜(点击弹出后背景变浅色,信息提示框效果)
- 一个不错的可拖动层遮罩加ALPHA滤镜(点击弹出后背景变浅色,信息提示框效果)
- Flex中如何利用PopUpManager类创建一个弹出Image控件的例子
- flex 在canvas中支持image等的拖动
- Flex 弹出窗口实现拖动
- Flex控制弹出窗口拖动范围
- Flex中如何利用键盘关闭(Esc)一个弹出窗口的例子
- 一个极帅的Mac风格的Flex弹出窗口实例