Flex 中的拖放操作

根据拖放支持,Flex组件可以分为两类:增强型拖放功能组件和非增强型拖放功能组件。下面是基于列表的控件都支持增强型的拖拽功能..

DataGrid    PrintDataGrid    Tree   Menu   List   HorizontalList   TileList

 

1.      在两个DataGrid之间拖放只需要设置一下dragEnableddropEnabled属性即可。一个是拖拽初始器,另一个是目标。

2.      DataGridList之间拖放。

List控件上可以添加这样一个监听   dragDrop = “doDragDrop(event)”

doDragDrop(event:DragSource):void{

          event.dragSource.dataForFormat(“items”);

}

 

用不可以直接拖拽组件上实现拖放功能

   比如将一个 Label组件中的数值拖放到List组件中:

1.      首先为Label控件添加一个mouseDown函数,并调用一个dragIt()方法,

2.      DragSource对象赋值,添加addData方法

3.      DragManager.doDrag(…);

4.      List控件添加doDragEnter监听,

5.      List控件添加doDragDrop监听

下面是该示例具体代码:

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

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

              xmlns:s="library://ns.adobe.com/flex/spark"

              xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

    <fx:Script>

       <![CDATA[

           import mx.collections.ArrayCollection;

           import mx.core.DragSource;

           import mx.core.IUIComponent;

           import mx.events.DragEvent;

           import mx.managers.DragManager;

          

           [Bindable]

           private var arrData:ArrayCollection = new ArrayCollection([{name:'老婆'}]);

          

           private function dragIt(initiator:Label, dsData:String, event:MouseEvent, format:String):void

           {

              var ds:DragSource = new DragSource();

              ds.addData(dsData, format);

              DragManager.doDrag(initiator, ds, event);

           }

          

           private function doDragEnter(event:DragEvent, format:String):void

           {

              if(event.dragSource.hasFormat(format)){

                  DragManager.acceptDragDrop(IUIComponent(event.target));

              }

           }

          

           private function doDragDrop(event:DragEvent, format:String):void{

              var myLabelData:Object = new Object();

              myLabelData = event.dragSource.dataForFormat(format);

              myList.dataProvider.addItem(myLabelData);

           }

       ]]>

    </fx:Script>

    <s:Panel title="想你老婆" x="281" y="71" height="324" width="465">

      <s:Label text="艳儿,我的宝贝" id="myLabel" mouseDown="dragIt(myLabel, myLabel.text, event, 'myFormat')" x="22" y="117"/>

       <s:List id="myList" x="267" y="13" width="140" height="236" dataProvider="{arrData}" labelField="name"

              dragEnter="doDragEnter(event, 'myFormat')" dragDrop="doDragDrop(event, 'myFormat')" />

    </s:Panel>

</s:Application>

 

界面效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值