`

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还有自定义的拖放方法,下回在说说自定义拖放的操作。

在家上网赚钱更容易

分享到:
评论

相关推荐

    Flex3组件拖放教程

    关于组件拖放 1 关于拖放操作 2 执行拖放操作 2 使用list-based控件 3 同个控件中执行拖放操作 6 获取拷贝中的类型信息 7 手动增加拖放操作支持 9 拖放操作 10 例子:Nonlist-based组件的...

    Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 内含: * MyReport报表引擎库文件MyReport.swc。 * MyReport免Flex开发集成版,适用于以传统html构建的系统,希望集成MyReport报表引擎的报表预览、...

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 内含: * MyReport报表引擎库文件MyReport.swc。 * MyReport免Flex开发集成版,适用于以传统html构建的系统,希望集成MyReport报表引擎的报表预览、...

    Flex:Web报表引擎+Web报表编辑器——MyReport 1.2.0.1

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 注: * 使用Flex SDK 3.5 * 内有报表样式定义说明 * 内有Demo工程参考,使用MyReport * 不提供MyReport源码,提供swc组件(类似dll) * 只需少量工作...

    Flex:Web报表引擎+Web报表编辑器——MyReport 1.3.0.0

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 注: * 用Adobe Flash Builder 4/Flex Builder 3开发环境打开,用Flex SDK 3.5进行编译 * 内有报表样式定义说明 * 内有Demo工程参考,使用MyReport ...

    Flex:Web报表引擎+Web报表编辑器——MyReport 2.0.0.0

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 注: * 用Adobe Flash Builder 4开发环境打开,用Flex SDK 4.1进行编译 * 内有报表样式定义说明 * 内有Demo工程参考,使用MyReport * 不提供...

    Flex:Web报表引擎+Web报表编辑器MyReport 1.1.0.0

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 最新版2.0.0.0支持Adobe Flash Builder 4,Flex SDK 4.1。 下载地址:http://download.csdn.net/source/2540794 注: * 使用Flex SDK 3.5 * 内有...

    Flex:Web报表引擎+Web报表编辑器——MyReport 2.2.0.0

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 注: * 用Adobe Flash Builder 4开发环境打开,用Flex SDK 4.1进行编译 * 内有报表样式定义说明 * 内有Demo工程参考,使用MyReport * 不提供...

    Web报表引擎——MyReport 2.1.0.1 (免Flex开发集成版)+.Net集成示例源码

    * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 注: * .Net示例建议用Visual Studio 2010开发环境打开 * 只需少量工作就能把MyReport整合,获得良好的打印体现和报表设计体现。 * 报表引擎效果图...

    软件界面设计工具_3款合集

    从能够显示您将获得什么的控件面板中进行拖放操作。 属性编辑程序使您能将每个元素进行自定义。 元素的自动生成功能。 您能在任何地方放置任何元素。 Edge snapping能通过“点击”对屏幕元素进行统一记录。 ...

    AIR1.5_管理员指南(CN)

    Adobe® AIR™ 是一种跨操作系统的运行时。在计算机上安装 AIR 后,用户可以安装和运行 AIR 应用程序。 本文档的目标读者是需要在网络计算机上安装和配置 Adobe AIR 的 IT 管理员。 AIR 应用程序支持本机桌面应用...

    ActionScript开发人员指南中文版

    AIR中拖放的基础知识 支持拖出手势 支持拖入手势 HTML中的拖放 将数据拖出HTML元素 将数据拖入HTML元素 示例:覆盖默认的HTML拖入行为 在非应用程序HTML沙箱中处理文件放置 放置文件释放 第章:使用菜单 菜单基础知识...

    贝壳企业网站管理系统ShellCMS v1.1.3

    产品结合中小企业用户的特点,设计了可视化拖放编辑模式,辅以强大的后台内容管理系统。无需写程序代码、无需美工基础,只要具有基本的审美观,就能迅速制作出美观实用的网站。 产品特点: 1、无需写代码、无需...

    flexDash:一个 JQueryUI 插件,用于创建由多个小部件组成的用户可自定义仪表板页面(类似于 MyYahoo.com、Start.Me 和 Protopage.com)

    每个小部件都有一个标题,其中包含用于触发“编辑”、“删除”、“显示信息”和“刷新”操作的按钮。 flexDash 客户端应用程序负责为每个动作提供处理函数。 更具体地说,flexDash 为交互用户请求的每个动作调用...

    贝壳企业网站管理系统ShellCMS v1.1.3.rar

    11、后台基于flex,操作更加便捷。 12、良好的安全性。 13、可选多种网页布局模式。 14、一键智能排版,支持使用快捷键对模块位置及大小的微调。 15、基于云计算的架构。 16、内置数据缓存   安装 ...

    ActionScript开发技术大全

    8.2.3在FlexBuilder3中进行调试 155 8.3处理ActionScript3.0中的异常 160 8.3.1使用try…catch…finally语句 160 8.3.2throw语句主动抛出异常 162 8.3.3处理异常事件 163 8.4异常类型 163 8.4.1异常对象 164 8.4.2...

    VMware Workstation Pro 12.0.0 Build 2985596 - 64bit [ENG] [Serial]

    著名虚拟机软件VMware Workstation专业版迎来了版本12。...利用 Workstation 12 Pro,您可以创建能够跨 VMware 产品组合运行的虚拟机,或创建能够在 Horizon FLEX 和 Workstation Player 中使用的受限虚拟机。

    EADashboardHelper-crx插件

    当在Einstein Analytics仪表板上编辑JSON时,它将启用页面操作,并且在激活JSON时将显示一个菜单,其中包含可修改的步骤,这将调出代码编辑器。 它只会显示自定义SAQL查询,并且在通过绑定修改SAQL时非常理想,因为...

Global site tag (gtag.js) - Google Analytics