ユーザーがナビゲーション領域をスクロールしているときにマスクを y 軸 (上下) に移動するフラッシュ cs3 ファイルがあります。
私のコードには、次のものがあります。
maskMC.startdrag();
マスクが移動する領域を制限し、ユーザーが特定の領域 (この場合はナビゲーション) から離れたときに元の位置に戻すにはどうすればよいですか。
ユーザーがナビゲーション領域をスクロールしているときにマスクを y 軸 (上下) に移動するフラッシュ cs3 ファイルがあります。
私のコードには、次のものがあります。
maskMC.startdrag();
マスクが移動する領域を制限し、ユーザーが特定の領域 (この場合はナビゲーション) から離れたときに元の位置に戻すにはどうすればよいですか。
1) マスクのドラッグを Y 軸に制限する:
startDrag の 2 番目の引数 (bounds:Rectangle) を使用するだけです。
// startDrag method details
startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
境界として使用する Rectangle を指定します。詳細と例は、Adobe の livedocsにあります。たとえば、ドラッグを Y 軸のみにロックするには、Rectangle の幅を 0 に等しくする必要があります。
var dragBounds:Rectangle = new Rectangle(startX, startY, 0, dragHeight);
myMask.startDrag(false, dragBounds);
2) ドロップ時にマスクを元の Y に戻します。
最も簡単な方法は、ステージで mouseup イベントをリッスンすることです。これが起動し、マスクをドラッグしているときに、マスク y を元の場所に設定します。個人的にはTweenerを使用してマスクを送り返しますが、好きなように行うことができます (おそらく enterFrame で)。
public function Main()
{
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
private function mouseUpHandler(e:MouseEvent):void
{
if (draggingMask)
{
Tweener.addTween(myMask, { y:originalY, time:0.5, transition:"easeOutQuad" });
draggingMask = false;
}
}
マスクのドラッグを開始するときはdragMaskを true に設定し、マスクを離すときは false に設定する必要があります。また、元の場所を格納するための変数も必要です (上記の例では "originalY" を使用しました)。
ドラッグの境界を使用するには、次を使用します ( を思い出してくださいimport flash.geom.Rectangle;
) 。
startDrag(lockCenter, new Rectangle(leftCornerx, leftCornery, width, height))
メニュー オブジェクトの外に移動して元に戻したい場合は、MouseEvent.ROLL_OUT
またはMouseEvent.MOUSE_MOVE
イベント リスナーとテストstage.mouseX
/を使用するかstage.mouseY
、hitTest を実行します。ステージにどのようにセットアップするかによって異なります。