zoukankan      html  css  js  c++  java
  • 【教程】【FLEX】#006 控件位置的拖动

    上一篇笔记学习了怎么从 把一个控件拖放到另外一个控件里面(即 A --》 B里面)。

    而现在呢,则是学习  怎么把 A 拖到另外一个位置。 (A --》A位置改变);


    先说一下实现的思路(主要也就是思路,不是什么技术问题):

    1、在控件拖动前要先注册好控件的MouseDown事件。(可以在控件创建好的时候注册,获取其他你觉得合适的时候)

    2、当鼠标MouseDown下的时候(鼠标点击下去,未放开鼠标的时候),注册控件的面板的MouseMoveROLL_UP事件以及控件的MouseUP

    3、在MouseMove的处理方法里面设置控件的x,y ,算法看代码截图里面。

    4、在MouseUp的处理事件里面,记得清除掉控件的ROLL_UPROLL_UPROLL_UP事件。

    这样呢,当鼠标点击下,就可以拖动控件的位置。鼠标放开或者移出面板范围的时候,清除面板移动,面板移出和鼠标放开的事件。

    代码例子:

    1、之所以把MouseMove事件设置在面板上,因为如果拖动速度太快的话,鼠标位置会移出控件对象之外,导致拖动停止。

    2、设置ROLL_OUT事件,如果鼠标移出了面板之外,控件就停止移动了。

    baidushurufa_2014-12-28_14-12-51


    贴上一个封装好的类(可以实现控件的拖动和控件的大小改变,不过有一些小问题,还没来得及改。):

    (详细的代码,封装好的一个类,只要传入控件对象,以及控件所在的面板对象就可以,帮你实现拖动了。)

    核心封装类 和调用例子:

    ControlOperate.as

    1、类的功能

        1.1 实现控件的位置拖动

        1.2 实现控件大小的改变

    调用方法

    //创建这个控件操作的类
    
    var operator:ControlOperate = new ControlOperate(this,null);  
    
     //传入控件对象(所有需要移动的控件都是使用这个类,所以控件对象传入放在方法里了)
    
    operator.setVariate(control);

    加上这两句的效果:

    clipboard

    拖动的效果:

    clipboard[1]

    点击那个些小点,可以改变控件的大小。(上面,右边的点,改变控件大小的算法有问题,还没修改)

    clipboard[2]

    多个控件的话

    clipboard[3]

    多个控件调用的方法: Application1_creationComplete是Application创建结束调用的方法。

    1、声明了一个ControlOperate对象

    2、实例化(传入当前的面板对象,以及另外一个面板的对象显示控件的属性,目前未实现))

    3、传入控件对象,传入之后,会为该对象注册相应的事件。

    clipboard[4]

     

  • 相关阅读:
    SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
    麦咖啡导致电脑不能上网
    SharePoint 2013 Central Admin 不能打开
    SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
    SharePoint 2013 APP 开发示例 系列
    synthesize(合成) keyword in IOS
    Git Cmd
    简单的正则匹配
    Dropbox
    SQL Server Replication
  • 原文地址:https://www.cnblogs.com/zhongxia/p/4190128.html
Copyright © 2011-2022 走看看