所有Flash组件都具有拖放能力。不过,各个组件的拖放能力并非都是等同的。下列组件具有加强的拖放能力(enhanced drag-and-drop capability):
DataGrid;
List;
TileList;
HorizontalList;
Menu;
PrintDataGrid;
Tree。
这意味着ActionScript会为我们做好大部分的工作。可是,如果要使用其他组件,如Label,我们就需要亲自做一些编程工作。
- <?xml version="1.0" encoding="utf-8"?>
- <!-- Main application to demonstrate TitleWindow layout container. -->
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="component.*">
- <mx:Script>
- <![CDATA[
- import mx.managers.DragManager;
- import mx.events.DragEvent;
- import mx.collections.ArrayCollection;
- import mx.controls.Alert;
- [Bindable]
- public var STATE_ARRAY:ArrayCollection =new ArrayCollection( [{label:"Alabama", data:"Montgomery"},
- {label:"Alaska1", data:"Juneau"},
- {label:"Arkansas", data:"LittleRock"}
- ]);
- [Bindable]
- public var list:ArrayCollection=new ArrayCollection();
- [Bindable]
- public var a1:ArrayCollection=new ArrayCollection();
- private function s(event:MouseEvent):void{
- list.removeAll();
- }
- private function onDragDrop(event:DragEvent):void{
- var row:Object=event.dragSource.dataForFormat("items");
- Alert.show(Array(row).length+"");
- list.addItem(row[1].label);
- event.preventDefault();
- }
- ]]>
- </mx:Script>
- <mx:DataGrid allowMultipleSelection="true" dataProvider="{STATE_ARRAY}" dragEnabled="true">
- <mx:columns>
- <mx:DataGridColumn headerText="Column 1" dataField="label"/>
- <mx:DataGridColumn headerText="Column 2" dataField="data"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:List dataProvider="{list}" dropEnabled="true" dragDrop="onDragDrop(event)"></mx:List>
- <mx:DataGrid dataProvider="{a1}" dropEnabled="true">
- <mx:columns>
- <mx:DataGridColumn headerText="Column 1" dataField="label"/>
- <mx:DataGridColumn headerText="Column 2" dataField="data"/>
- </mx:columns>
- </mx:DataGrid>
- <mx:ControlBar>
- <mx:TextInput id="column1">
- </mx:TextInput>
- <mx:TextInput id="column2" />
- <mx:Button id="addGridRow" click="s(event)" label="addGridRow" />
- </mx:ControlBar>
- </mx:Application>