`

flex中的拖放操作(一)

    博客分类:
  • Flex
阅读更多

在家上网赚钱更容易

可视化的开发环境最大的特点是允许你在一个应用程序中通过鼠标的选择、移动,灵活地处理屏幕上的对象。Flex Drag and Drop Manager 可以选择一个对象(如 List 控件中的数据项)或者一个 Flex 控件(如 Image 控件),然后拖拽它到其他组件或者将其数据添加到其他组件中。

所有的 Flex 组件都支持 drag-and-drop 操作。Flex 也对一些组件提供了特殊的附加支持,如 ListTree  DataGrid

 

drag-and-drop 操作

drag-and-drop 操作有三个主要的步骤:初始化,拖拽和释放。下面的段落从大的角度描述三个步骤。

初始化(Initation:用户初始化 drag-and-drop 操作通过鼠标选择一个组件或者组件中的数据项,然后按住鼠标键不放,移动组件或数据项。例如,用户选择了一个List控件中的数据项,按住鼠标键,移动鼠标几个像素。这个被选择的组件称为拖拽初始器(drag initiator

拖拽(Drag:按住鼠标键时,用户在Flex程序中移动鼠标。Flex 在拖拽过程中显示一个图像,称为拖拽代理(drag proxy拖拽源(drag source(一个 DragSource 对象)包含被拖拽的数据信息。

释放(Drop:当用户移动拖拽代理到其它 Flex 组件之上,那个组件成为一个可能的释放目标(drop target。释放目标会检查拖拽源,确认其中的数据是否与目标所接受的目标结构相一致。如果一样,允许用户可以将数据释放到组件里;否则释放目标会拒绝释放操作。

紧接着一个成功的释放操作,Flex 在目标中添加数据,同时(可选的),在数据原来的位置删除它。

list-based控件使用 drag-and-drop

下面的控件包含了对 drag-and-drop 操作的内置的支持:

  • DataGrid
  • PrintDataGrid
  • Tree
  • Menu
  • List
  • HorizontalList
  • TileList

将这些控件转变为拖拽初始器,你需要做的是将 dragEnabled 属性设置为 true。你没有必要定义一个事件侦听器来启动一个拖拽操作。Flex 允许你通过拖拽将数据项从一个 drag-enabled 控件移动到一个 drop-enabled 控件,或者按住 Control 键同时拖拽数据项来复制他们。

这些控件提供了一些属性和方法来管理 drag-and-drop 操作。下面的表格列举了部分属性和

属性

描述

dragEnabled

控件是否允许拖拽操作,默认为false

dropEnabled

控件是否允许释放操作,默认为false

dragMoveEnabled

拖拽数据是否移动到接受控件中,值为false时表示复制,默认为false

 

 

 

 

 

 

 

下面的简单例子展示了如何从一个 List 控件复制数据项到另一个 List 控件:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">

<mx:Script>

     <![CDATA[

            private function initApp():void {    

             srclist.dataProvider = ['Reading', 'Television', 'Movies'];

             destlist.dataProvider =[];

         }

     ]]>

</mx:Script>

     <mx:List id="srclist" height="100" allowMultipleSelection="true" dragEnabled="true"/>

     <mx:List id="destlist" height="100" dropEnabled="true" x="271" y="0"/>

</mx:Application>图一

 

通过将第一个 List  dragEnabled 属性设置为 true,第二个List dropEnabled 属性设置为 true,你就可以让用户将数据项安全的从第一个 List 拖拽到第二个 List

因为 dragMoveEnalbe 属性默认值是 false,你目前只是从一个 List 复制数据项到另一个。如果你修改例子将第一个 List  dragMoveEnabled 设置为 true,你可以移动数据项,就像下面的例子显示的:

    <mx:List id="srclist" height="100" allowMultipleSelection="true" dragEnabled="true" dragMoveEnabled="true"/>

 

默认的操作是移动数据项。如果想复制数据项,在拖拽时按住 Control 键。

如果你打算实现双向的拖拽,可以将两个列表的 dragEnabled 属性和 dropEnabled 属性设置为 true,如下:

 

 

    <![CDATA[

         private function initApp():void {

             srclist.dataProvider = ['Reading', 'Television', 'Movies'];

             destlist.dataProvider =[];

         }

     ]]>

<mx:List id="srclist" height="100" allowMultipleSelection="true" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true"/>

<mx:List id="destlist" height="100" allowMultipleSelection="true" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true"/>

图二

 

下面的例子演示了使用 DataGrid 替换 List 达到同样的效果:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">

<mx:Script>

            <![CDATA[

             private function initApp():void {

                 srcgrid.dataProvider =

                    [

                                 { Artist:'Carole King', Album:'Tapestry', Price:11.99},

                         { Artist:'Paul Simon', Album:'Graceland', Price:10.99},

                         { Artist:'Original Cast', Album:'Camelot', Price:12.99},

                         { Artist:'The Beatles', Album:'The White Album', Price:11.99}

                     ];

                 destgrid.dataProvider =[];   

             }

            ]]>

</mx:Script>

     <mx:DataGrid id="srcgrid" allowMultipleSelection="true" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" x="43" y="142"/>

    <mx:DataGrid id="destgrid" allowMultipleSelection="true" dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" x="383" y="142" width="250"/>

</mx:Application>

图三

 

 

上面就是在flex中内置组件支持的拖放效果和操作的方法,flex还有自定义的拖放方法,下回在说说自定义拖放的操作。

在家上网赚钱更容易

分享到:
评论

相关推荐

    Flex 3 拖放实现

    而在 Adobe AIR 应用中,由于有更广泛的系统访问权限,可以实现跨应用程序或桌面的拖放操作。 示例中的 `CanvasDD.mxml` 文件很可能是展示如何在一个 Canvas 组件上实现拖放功能的代码实例。`myComponents` 文件夹...

    Flex3组件拖放教程

    通过拖放操作,用户能够选择一个对象(例如`List`控件或Flex中的`Image`控件),并将其拖动至另一个组件(容器)中,最终将该对象添加到目标组件内。 #### 二、关于拖放操作 拖放操作主要包括三个阶段:初始化、...

    Flex3+组件拖放教程

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

    flex中 Tree树节点内部拖动实例(此实例限制了什么节点可以拖动及拖动到什么位置)

    在本文中,我们将详细探讨如何在Flex的Tree组件中实现节点的拖放操作,并且限制可拖动的节点以及拖动的目标位置。 首先,我们需要了解Flex Tree组件的基本用法。Tree组件用于显示层次结构的数据,每个节点代表数据...

    Flex基础培训-6-拖放与过滤

    在现代的交互设计中,拖放操作是一种极为常见的数据处理方式。它不仅简化了用户的操作流程,还提高了应用程序的用户体验。例如,在Windows操作系统中,我们可以通过简单的拖拽动作将一个文件移动到另一个文件夹中...

    flex中拖拉拽好实例objecthandles

    总的来说,"flex中拖拉拽好实例objecthandles"是一个关于Flex拖放机制的实践案例,特别强调了ObjectHandle组件的使用,这对于开发具有高度交互性的Flex应用来说是非常有价值的。通过分析和学习这个实例,开发者能够...

    Flex拖拽控件效果

    `DragManager`是系统级别的服务,负责管理整个应用的拖放操作,而`DragInitiator`通常是一个可拖动的UI组件,如Button、Canvas等。 1. **DragManager**: - `startDrag()`方法:这是启动拖放操作的关键,通常在...

    flex 拖拽功能 中文文档

    以下是一个使用Flex的拖放功能将一个`List`控件中的条目移动到另一个`List`控件的简单示例代码: ```xml &lt;!-- dragdrop\SimpleListToListMove.mxml --&gt; creationComplete="initApp();"&gt; &lt;![CDATA[ import mx...

    flex 拖拽效果程序

    3. **定义拖放范围(Drop Target)**:拖放操作还需要一个或多个接受拖动数据的目标。目标组件通常也需要是UIComponent的子类,通过监听`dragEnter`, `dragDrop`, 和 `dragLeave`事件来处理拖放行为。 4. **监听...

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

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

    flex 拖拽的例子

    在Flex中,拖放操作分为三个主要部分:启动源(DragSource)、目标区域(DropTarget)以及拖放事件。启动源是用户可以开始拖动的组件,目标区域是用户可以放下被拖动对象的地方。Flex提供了一系列的DragManager类和...

    Flex关于拖拽编程

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

    Flex拖拽库flex拖拽库

    4. 拖放效果:通过设置`DragManager.acceptDrag()`和`DragManager.dropEffect`,可以控制拖放操作是否被接受,以及拖放时的视觉反馈,如“copy”、“move”等效果。 三、Flex Drag-and-Drop库的扩展和自定义 1. ...

    Flex4实现拖拽功能

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

    Flex_DragDrop

    你可以使用`DragManager.addData()`方法添加数据到拖放操作中,这样当拖放操作结束时,接收方可以通过`event.data`获取这些数据。这对于实现更复杂的功能,如在不同组件间传输信息非常有用。 4. **DragEffect**:...

    Flex拖动购物车很Cool给大家更多的帮助

    在Flex中,实现拖放操作主要依赖于两个主要类:`DragManager`和`DropTarget`。`DragManager`是系统级别的对象,负责管理整个应用程序的拖放行为,而`DropTarget`则定义了可接收拖放操作的目标区域。 1. **...

    flex DragTile.zip DragTile.zipDragTile.zip

    通过分析项目压缩包中的文件,我们可以深入理解Flex在拖放操作中的实现方式。 首先,`.actionScriptProperties`文件是ActionScript的配置文件,其中包含了关于项目中ActionScript编译器设置的信息,如编译器选项、...

    Flex中文帮助文档,绝对实用

    5. **Flex Component Suite**: Flex框架内含一套丰富的预建UI组件,如按钮、文本输入框、列表、图表等,这些组件可拖放使用,使得快速开发成为可能。 文档中的"Flex中文帮助No4章"可能涉及以下内容: - **数据绑定...

    flex拓扑示例(可以拖动)

    这个"flex拓扑示例(可以拖动)"是一个关于如何在Flex中创建可拖动元素的实践项目,非常适合那些希望提升Flex编程技能,尤其是对用户交互感兴趣的开发者。 在Flex中,拖放功能主要通过Flash Player的内置DragManager...

    Flex 拖拽例子 从不同组件间拖拽

    拖放操作在Flex中分为两个主要部分:拖动源(Drag Source)和放置目标(Drop Target)。拖动源是用户开始拖动操作的对象,而放置目标是用户可以放下该对象的目标区域。Flex提供了DragManager类来处理这些操作,并且...

Global site tag (gtag.js) - Google Analytics