Flash におけるオブジェクトのマウスドラッグ追従は非常に一般的な効果であり、以下は簡単な AS3 コードの実装です。このコードは、マウスで表示オブジェクトをドラッグする際に Flash オブジェクトのアニメーション再生が中断されず、空白にならない点で、一般的に使用される方法とは異なります。オブジェクトが移動する際に移動量を記録し、その後コピーされた新しいオブジェクトに値を設定することで、画像の一意な実装を実現しています。
// プライベート変数
private class ObjectDragging
{
private var offsetX;
private var offsetY;
private var draggedObject:*;
public function ObjectDragging(Obj:\*)
{
addObjectDrag(Obj);
}
priavte function addObjectDrag(Obj:\*):void {
Obj.addEventListener(MouseEvent.MOUSE\_DOWN, startDragging);
Obj.addEventListener(MouseEvent.MOUSE\_UP, stopDragging);
}
//移動開始
private function startDragging(event:MouseEvent):void {
//ドラッグされているオブジェクトを記録
draggedObject = DisplayObject(event.target);
//マウスのオフセットを記録
offsetX = event.stageX - draggedObject.x;
offsetY = event.stageY - draggedObject.y;
//新しいオブジェクトを追加
stage.addChild(draggedObject);
//マウス移動イベントをリスン
stage.addEventListener(MouseEvent.MOUSE\_MOVE, dragObject);
}
//ドラッグ停止
private function stopDragging(event:MouseEvent):void {
//マウス移動イベントを削除
stage.removeEventListener(MouseEvent.MOUSE\_MOVE, dragObject);
}
private function dragObject(event:MouseEvent):void {
//新しい座標を設定
draggedObject.x = event.stageX - offsetX;
draggedObject.y = event.stageY - offsetY;
//イベントを更新
event.updateAfterEvent();
}
}