banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

AS3によるオブジェクト(DisplayObject)のマウスドラッグ(Drag)追従の実装

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();
}

}

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。