疫情期间手机直线:18622734798
当前位置:首页网站设计:基础篇 → 全部信息
Flex中如何拖拽标签
更新时间:2012/10/30 点击:1180次

一、最最简单的是直接调用ui组件的startDrag方法和stopDragging方法,这2个方法是flash中的所有继承于Sprite类的组件类都支持的。适用于在同一个容器中的拖拽。
思路是监听需要拖拽的组件的MOUSE_DOWN和MOUSE_UP事件,剩下来的有flash帮你自动完成。
       private static function init():void{
           myVBox.addEventListener(MouseEvent.MOUSE_DOWN,startDragging);
           myVBox.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
    }
// 按下鼠标按键时会调用此函数。
       private static function startDragging(event:MouseEvent):void
       {
           event.currentTarget.startDrag();
       }
       // 松开鼠标按键时会调用此函数。
       private static function stopDragging(event:MouseEvent):void
       {
           event.currentTarget.stopDrag();
    }
二、借助DragManager实现拖拽。好处是可以方便的控制哪些容器支持被拖拽,也就是方便的订制拖拽的业务规则。适用于多个容器之间的拖拽。
假设把a组件从b容器拖拽到c容器
思路是对a监听鼠标MOUSE_DOWN事件,对c监听DRAG_ENTER和DRAG_DROP事件。其他的由flash完成。
       private function init():void
       {
           a.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
           c.addEventListener(DragEvent.DRAG_ENTER,dragEnterHandler);
           c.addEventListener(DragEvent.DRAG_DROP,dragDropHandler);
    }

       private static function mouseDownHandler(event:MouseEvent):void
       {
           var dragInitiator:UIComponent=UIComponent(event.currentTarget);
           var ds:DragSource = new DragSource();
           ds.addData(dragInitiator, "myRule");
           DragManager.doDrag(dragInitiator, ds, event);
       }
    
       private static function dragEnterHandler(event:DragEvent):void {
           if (event.dragSource.hasFormat("myRule "))
           {

  • 疫情期间手机直线:18622734798    服务邮箱:service@nfree.cn     QQ:1448132697
  • 地址:天津市河西区围堤道146号华盛广场B座22楼    

    津公网安备 12010302001042号

  • CopyRight 2006~2024 All Rights Reserved 天津市华易动力信息科技有限公司