banner
李大仁博客

李大仁博客

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

AS3でオブジェクト(DisplayObject)のマウスドラッグ(Drag)を実現する

フラッシュでは、オブジェクトのマウスドラッグフォローはよく使用される効果です。以下は簡単な 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();
}

}

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