フラッシュでは、オブジェクトのマウスドラッグフォローはよく使用される効果です。以下は簡単な AS3 コードで、一般的な方法とは異なり、オブジェクトをドラッグする際にフラッシュオブジェクトのアニメーション再生が中断されず、空白にならないという特徴があります。フラッシュの組み込みの Drag メソッドと比較して、ユーザーのニーズに合っています。オブジェクトの移動時に移動量を記録し、それをコピーした新しいオブジェクトに割り当てることで、画像の一意の実現を実現しています。
// プライベート変数
private class ObjectDragging
{
private var offsetX;
private var offsetY;
private var draggedObject:*;
public function ObjectDragging(Obj:\*)
{
addObjectDrag(Obj);
}
private 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();
}
}