• flex:弹出一个能拖动的canvas!


    在flex里,如果我们需要弹出一个窗口,经常选择的弹出组件是TitleWindow。

    可是这个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的弹出组件:

     

     下面是这个组件的源代码:/Files/orchid/codesource.rar

    与大家共同学习吧! 

  • 相关阅读:
    git 回滚到某个历史版本
    java值传递与引用传递
    Spring的事务管理
    MySql安装详细图解 以及卸载不干净解决方法
    如果你决定要出发,那么旅行中最困难的部分已经结束,出发吧!
    微信小程序总是提醒安装X5内核
    使用vuerouter实现返回
    手机上测试
    H5移动端知识点总结
    微信小程序授权问题
  • 原文地址:https://www.cnblogs.com/orchid/p/1593456.html
Copyright © 2020-2023  润新知