使用Flex 3 就可以很容易作 Drag Drop的程式,比Flex 2好寫很多哦
以 List物件來說
方式一:
直接在兩個List 設定 dropEnabled="true" dragEnabled="true" dragMoveEnabled="true" ,這樣就可以相互拖拉所選的項目
方式二:
以我的Flex 作品 3來說, 有一個GridView 可以將資料拉出來(Drag),放至一個垃圾桶(Drop),那我建議的方式為在GridView 設 dragEnabled 屬性設為true dragMoveEnabled 也設為true
,但在 垃圾桶(為一個Image的物件)要有
dragDrop="dragDropHandler(event);"
dragEnter="dragEnterHander(event);"
private function dragEnterHander(event:DragEvent):void {
if (event.dragSource.hasFormat("items"))
{
var data:Array = event.dragSource.dataForFormat('items') as Array;
//這邊可以寫是否要檢查,是否要接受Drag的資料
var dropTarget1:mx.controls.Image = event.currentTarget as mx.controls.Image;
DragManager.acceptDragDrop(dropTarget1);
}
}
private function dragDropHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("items"))
{
// Explicitly handle the dragDrop event.
event.preventDefault();
// Get drop target. var dropTarget:mx.controls.Image=mx.controls.Image(event.currentTarget);
//要讓垃圾桶換圖片
dropTarget.load(trash2Img);
var data:Array = event.dragSource.dataForFormat('items') as Array;
//為一個ArrayCollection新增Drop的資料
trashAC.addItemAt(data[0],0);
}
}
真是太簡單了~~~
沒有留言:
張貼留言