2

ユーザーがナビゲーション領域をスクロールしているときにマスクを y 軸 (上下) に移動するフラッシュ cs3 ファイルがあります。

私のコードには、次のものがあります。

maskMC.startdrag();

マスクが移動する領域を制限し、ユーザーが特定の領域 (この場合はナビゲーション) から離れたときに元の位置に戻すにはどうすればよいですか。

4

2 に答える 2

2

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" を使用しました)。

于 2009-11-10T05:14:25.917 に答える
0

ドラッグの境界を使用するには、次を使用します ( を思い出してくださいimport flash.geom.Rectangle;) 。

startDrag(lockCenter, new Rectangle(leftCornerx, leftCornery, width, height))

メニュー オブジェクトの外に移動して元に戻したい場合は、MouseEvent.ROLL_OUTまたはMouseEvent.MOUSE_MOVEイベント リスナーとテストstage.mouseX/を使用するかstage.mouseY、hitTest を実行します。ステージにどのようにセットアップするかによって異なります。

于 2009-11-10T07:20:03.043 に答える