`
demojava
  • 浏览: 551688 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flex DragManager

阅读更多

DragManager 类管理拖放操作,您可以使用它来将数据从 Flex 应用程序中的一个位置移动到另一位置。例如,您可以选择一个对象(如 List 控件中的项目)或一个 Flex 控件(如 Image 控件),然后将其拖至另一个组件进行添加。

1.DragManager.showFeedback(feedback:String):void参数feedback可选值
DragManager.COPY 在拖动鼠标,并按下Crtl键时显示一个带有一个白色加号的绿色圆圈表示可以放置

DragManager.LINK 在拖动鼠标,并按下shift键时出现一个带有白色箭头的圆圈
DragManager.MOVE 仅一个箭头表示当前可以拖放
DragManager.NONE表示不能放置的图标
1.简单的demo

<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">   
    <mx:Script>   
        <![CDATA[
        	import mx.controls.Alert;
        	import mx.controls.Label;   
            import mx.core.IUIComponent;   
            import mx.containers.Box;   
            import mx.containers.Canvas;   
            import mx.events.DragEvent;   
            import mx.managers.DragManager;   
            import mx.core.DragSource;   
            import mx.core.UIComponent;   
            private static const FORMAT:String = "box";   
  
            private function boxMouseDownHandler(evt:MouseEvent):void{   
                var iu:Box = evt.currentTarget as Box;   
                var dragSource:DragSource = new DragSource();   
                dragSource.addData( iu, FORMAT );   
//                lbl.setStyle("backgroundColor","red");
                DragManager.doDrag( iu, dragSource, evt );   
            }   
               
            private function canvasDragEnterHandler(evt:DragEvent):void{   
                if(evt.dragSource.hasFormat(FORMAT)){   
                    DragManager.acceptDragDrop(Canvas(evt.currentTarget));   
                }   
            }   
               
            private function canvasDragHandler(evt:DragEvent):void{   
                var box:Box = Box(evt.dragInitiator);   
                box.x = evt.localX;   
                box.y = evt.localY;   
            }   

        ]]>   
    </mx:Script>   
       
    <mx:Canvas backgroundColor="0xEEEEEE" width="652"  verticalScrollPolicy="off" horizontalScrollPolicy="off" height="320" horizontalCenter="0" verticalCenter="0" dragEnter="canvasDragEnterHandler(event)"  dragDrop="canvasDragHandler(event)">   
        <mx:Box id="box"  width="54" height="66"  x="80" y="79" mouseDown="boxMouseDownHandler(event)" focusEnabled="true" >
        	        <mx:Image source="file.png" width="41" height="36" x="111" y="121"/>
        </mx:Box>   

    </mx:Canvas>   
</mx:Application> 

 

2.拖拽显示拖拽对象的缩略图,遗憾的是DragManager 对拖拽区域控制的不是很好,

效果图:



 

<?xml version="1.0"?>
<!-- dragdrop\DandDImageProxy.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[
            //Import classes so you don't have to use full names.
            import mx.managers.DragManager;
            import mx.core.DragSource;
            import mx.events.DragEvent;
            import flash.events.MouseEvent;

            [Embed(source='1.png')]
            public var globeImage:Class;

            private function mouseOverHandler(event:MouseEvent):void 
            {                
                var dragInitiator:Image=Image(event.currentTarget);
                var ds:DragSource = new DragSource();
                ds.addData(dragInitiator, "img");               
                var imageProxy:Image = new Image();
                imageProxy.source = globeImage;
                imageProxy.height=60;
                imageProxy.width=40;                
                DragManager.doDrag(dragInitiator, ds, event, 
                    imageProxy, -15, -15, 1.00);
            }
            private function dragEnterHandler(event:DragEvent):void {
                if (event.dragSource.hasFormat("img"))
                {
                    DragManager.acceptDragDrop(Canvas(event.currentTarget));
                }
            }

            private function dragDropHandler(event:DragEvent):void {
                Image(event.dragInitiator).x = 
                    Canvas(event.currentTarget).mouseX;
                Image(event.dragInitiator).y = 
                    Canvas(event.currentTarget).mouseY;
            }
        ]]>
    </mx:Script>
    
    <!-- The Canvas is the drag target --> 
    <mx:Canvas id="v1" 
        width="500" height="500"  
        borderStyle="solid" 
        backgroundColor="#DDDDDD"
        dragEnter="dragEnterHandler(event);" 
        horizontalScrollPolicy="off"
        verticalScrollPolicy="off"
        dragDrop="dragDropHandler(event);">
        
        <!-- The image is the drag initiator. -->
        <mx:Image id="myimg" 
            source="@Embed(source='1.png')" 
            mouseMove="mouseOverHandler(event);"/> 
    </mx:Canvas>
</mx:Application>

 

3.拖拽显示拖拽对象的缩略图,控制拖拽区域:

<?xml version="1.0"?>
<!-- dragdrop\DandDImageProxy.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[
            //Import classes so you don't have to use full names.
            import mx.managers.DragManager;
            import mx.core.DragSource;
            import mx.events.DragEvent;
            import flash.events.MouseEvent;

            [Embed(source='1.png')]
            public var globeImage:Class;

            private function mouseOverHandler(event:MouseEvent):void 
            {                
                var dragInitiator:Image=Image(event.currentTarget);
                var ds:DragSource = new DragSource();
                ds.addData(dragInitiator, "img");               
                var imageProxy:Image = new Image();
                imageProxy.source = globeImage;
                imageProxy.height=60;
                imageProxy.width=40;                
                DragManager.doDrag(dragInitiator, ds, event, 
                    imageProxy, -15, -15, 1.00);
            }
            private function dragEnterHandler(event:DragEvent):void {
                if (event.dragSource.hasFormat("img"))
                {
                    DragManager.acceptDragDrop(Canvas(event.currentTarget));
                }
            }

            private function dragDropHandler(event:DragEvent):void {
                Image(event.dragInitiator).x = 
                    Canvas(event.currentTarget).mouseX;
                Image(event.dragInitiator).y = 
                    Canvas(event.currentTarget).mouseY;
                    if(Image(event.dragInitiator).x <0)
                    {
                    	Image(event.dragInitiator).x =0;
                    }
                    if(Image(event.dragInitiator).x >v1.width-Image(event.dragInitiator).width)
                    {
                    	Image(event.dragInitiator).x =v1.width-Image(event.dragInitiator).width;
                    }
                    if(Image(event.dragInitiator).y<0)
                    {
                    	Image(event.dragInitiator).y=0;
                    }
                    if(Image(event.dragInitiator).y>v1.height-Image(event.dragInitiator).height)
                    {
                    	Image(event.dragInitiator).y=v1.height-Image(event.dragInitiator).height;
                    }
            }
        ]]>
    </mx:Script>
    
    <!-- The Canvas is the drag target --> 
    <mx:Canvas id="v1" 
        width="500" height="500"  
        borderStyle="solid" 
        backgroundColor="#DDDDDD"
        dragEnter="dragEnterHandler(event);" 
        horizontalScrollPolicy="off"
        verticalScrollPolicy="off"
        dragDrop="dragDropHandler(event);">
        
        <!-- The image is the drag initiator. -->
        <mx:Image id="myimg" 
            source="@Embed(source='1.png')" 
            mouseMove="mouseOverHandler(event);"/> 
    </mx:Canvas>
</mx:Application>

 

 

 

附件(dNdLib.swc.zip )为google code 上的拖拽包

  • 大小: 3.6 KB
分享到:
评论

相关推荐

    Flex4实现拖拽功能

    首先,我们需要了解Flex4中的DragManager类,它是实现拖放操作的核心。DragManager提供了开始拖放、监听拖放事件以及处理拖放结果的方法。当用户开始拖动一个对象时,我们可以通过调用DragManager的beginDrag()方法...

    flex 拖拽的例子

    Flex提供了一系列的DragManager类和DragEvent类来处理这些操作。 1. **启动源(DragSource)**: 在Flex中,我们可以为任何UIComponent创建一个DragSource,定义拖动时的数据。例如,如果要拖动一个列表项,我们...

    flex 竖排Menu

    5. **拖拽支持**:若要实现拖拽功能,可以使用DragManager和DropTarget类,将MenuBar设置为可拖动,并定义合适的drop目标。 标签“Flex MenuBar 竖”强调了这个主题的关键特征,即Flex中的垂直MenuBar。 在压缩包...

    flex拖动树形

    在Flex中实现拖放功能,我们需要利用Flex提供的DragManager和DropTarget类。DragManager负责处理整个拖放过程的逻辑,而DropTarget则定义了可以接受被拖动对象的目标区域。 首先,我们需要为树形控件设置DragSource...

    Flex关于拖拽编程

    Flex中的拖放操作主要依赖于`DragManager`类,它是整个拖放过程的核心。`DragManager`提供了一系列静态方法和属性,用于控制和监控拖放行为。例如,`DragManager.enableDrag()`可以开启拖放功能,而`DragManager....

    flex实现的拖拽控件

    拖拽功能在Flex中可以通过使用内置的DragManager类和Event类来实现。DragManager类提供了全局的拖放管理,而事件类如MouseEvent和DragEvent则是处理拖放过程中的各种交互。下面我们将深入探讨如何在Flex中创建一个...

    flex 移动折线图

    本篇将深入探讨如何在Flex中实现线图的左右移动,以及DragManager类在其中的作用。 一、Flex中的LineChart组件 LineChart是Flex中用于绘制折线图的标准组件,它继承自Chart类,可以展示各种数值型数据。LineChart...

    Flex拖拽库flex拖拽库

    1. 自定义DragManager:虽然Flex提供了内置的`DragManager`,但开发者可以根据需求创建自定义的拖放逻辑。例如,可以创建一个子类,重写其方法以实现特定的拖放行为。 2. 拖放服务:使用服务接口(如`IDragSource`...

    flex3一个简单购物车拖拽的例子

    1. **拖放功能**:在Flex中,实现拖放操作主要依赖于`DragManager`和`DropTarget`类。`DragManager`负责管理整个应用程序的拖放行为,而`DropTarget`则定义了可以接受拖放操作的目标对象。在这个例子中,商品图标...

    Flex拖拽控件效果

    在Flex中,实现拖放(Drag and Drop)功能主要涉及两个核心类:`DragManager`和`DragInitiator`。`DragManager`是系统级别的服务,负责管理整个应用的拖放操作,而`DragInitiator`通常是一个可拖动的UI组件,如...

    flex tree 拖拽

    1. **DragManager**: Flex 中的 DragManager 是处理拖放事件的主要对象,它负责监控和管理整个拖放过程。开发者需要通过 DragManager 来启动拖动操作,并设置拖动源和目标的相关属性。 2. **dragEnabled 和 ...

    flex 弹出窗口选择,支持autocomplete功能

    5. **DragManager和DropTarget**:为了实现拖放功能,我们需要利用Flex的DragManager和DropTarget类来处理拖放事件。 6. **自定义配置文件解析**:我们可以创建一个配置类,读取XML或JSON格式的配置文件,解析其中的...

    Flex3+组件拖放教程

    `DragManager` 是Flex中全局的拖放管理器,负责处理所有的拖放操作,而`DragSource` 则是定义拖放源的类,它定义了被拖动的数据以及与之相关的视觉效果。 首先,要实现拖放操作,你需要设置一个可拖动的组件。这...

    Flex 4.5 实现tree拖拽到任意组建

    1. **Flex 4.5的DragManager和DropTarget** Flex 4.5中的`DragManager`和`DropTarget`是实现拖放操作的核心类。`DragManager`负责整个拖放过程的管理,包括启动拖放、跟踪鼠标移动和处理释放事件等。而`DropTarget`...

    flex拓扑示例(可以拖动)

    在Flex中,拖放功能主要通过Flash Player的内置DragManager类实现。DragManager允许开发者启动、管理和控制拖放操作。在描述中提到的示例中,可能包含了以下关键知识点: 1. **组件的可拖动性**:在Flex中,任何...

    flex表格间数据的拖拽

    实现数据拖拽的关键在于利用Flex的DragManager和DropManager类。DragManager负责处理拖动的启动、执行和结束,而DropManager则管理目标区域的接收和响应。在两个DataGrid之间进行数据拖放时,我们需要为源DataGrid的...

    flex中拖拉拽好实例objecthandles

    DragManager是Flex中负责管理所有拖放操作的全局对象,它提供了开始拖放、结束拖放等核心方法。在实例中,可能通过调用DragManager.startDrag()开始一个拖放过程,并设置拖动范围、是否允许缩放或旋转等参数。 接着...

    flex做的购物商店中文版(**推荐**)

    这利用了Flex的DragManager和DropTarget API,可以增强用户的交互体验。 5. **中文版**:这个版本的购物商店是中文的,意味着所有的用户界面元素、提示信息和帮助文档都本地化为中文,适应中国用户的需求。 6. **...

    flex 特效拖动Panel变Window

    4. 拖放(Drag and Drop):实现拖动Panel的关键是使用Flex的DragManager和DropManager。通过设置dragEnabled属性为true,我们可以使Panel成为可拖动的源。同时,我们需要监听鼠标事件,如mousedown、mousemove和...

    flex_libs.rar

    3. 拖拽组件:Flex提供了DragManager和DropManager来支持拖放操作,但这里的“拖拽组建”可能是对这一功能的封装,提供了更加易用的API和更好的视觉反馈。拖拽组件常用于构建具有用户友好的界面,例如在列表之间移动...

Global site tag (gtag.js) - Google Analytics