<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"
backgroundColor="#333333" xmlns:tools="tools.*" creationComplete="init();"
>
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.core.DragSource;
import mx.events.DragEvent;
import mx.managers.DragManager;
[Embed(source="000.png")]
private var imgsrc:Class;
private function init():void
{
img1.source = imgsrc;
img2.source = imgsrc;
}
/**
* 開始拖拽
* */
private function dragHandler(event:MouseEvent):void
{
// 定義拖拽掛載數據源
var dsragSource = new DragSource();
// 定義拖拽圖標(用於第二副圖片的拖拽)
var di:Image = new Image();
// 拖拽對象
var target:Image = event.currentTarget as Image;
// 添加拖拽數據源數據
dsragSource.addData(target, "img");
dsragSource.addData(event.localX, "x");
dsragSource.addData(event.localY, "y");
// 拖拽圖標
if (target.id == "img2")
di.source = new Bitmap(getBitmapData(target.content));
else
di = null;
// 執行拖拽
DragManager.doDrag(target, dsragSource, event, di);
}
/**
* 進入拖放區域
* */
private function dragEnterHandler(event:DragEvent):void
{
// 進入區域, 設置狀態爲允許拖放
if (event.dragSource.hasFormat("img"))
DragManager.acceptDragDrop(event.target as UIComponent);
}
/**
* 釋放拖拽
* */
private function dragDropHandler(event:DragEvent):void
{
// 複製圖片
var img:Image = new Image();
img.source = new Bitmap(getBitmapData(event.dragSource.dataForFormat("img") as DisplayObject));
// 處理圖片防止位置
img.x = event.currentTarget.mouseX - (event.dragSource.dataForFormat("x") as Number);
img.y = event.currentTarget.mouseY - (event.dragSource.dataForFormat("y") as Number);
// 顯示圖片
event.currentTarget.addChild(img);
}
/**
* 獲取圖片信息
* */
private function getBitmapData(target:DisplayObject):BitmapData
{
var res:BitmapData = new BitmapData(target.width, target.height);
res.draw(target);
return res;
}
]]>
</mx:Script>
<mx:VBox>
<mx:Image id="img1" mouseDown="dragHandler(event);" />
<mx:Image id="img2" mouseDown="dragHandler(event);" />
<mx:Button label="Clear Images" click="testArea.removeAllChildren();" />
</mx:VBox>
<mx:Canvas id="testArea" backgroundColor="#ffffff" width="100%" height="100%"
dragEnter="dragEnterHandler(event);" dragDrop="dragDropHandler(event);" />
</mx:Application>