0

ムービークリップのドラッグを themapmask というマスクに制限したいと思います。ドラッグ可能な MC の名前は mapcontainer.themap です。その親である mapcontainer は、ステージに比例してスケーリングされます。ドラッグした mc をマスクに拘束するにはどうすればよいですか? 以下のコードはロード時に機能しますが、ステージがスケーリングされているときは機能しません。

function constrainMap():void {
    leftedge = themapmask.x+mapcontainer.themap.width/2-mapcontainer.x;
    rightedge= themapmask.x+themapmask.width-mapcontainer.width/2-mapcontainer.x;
    topedge = themapmask.y+mapcontainer.themap.height/2-mapcontainer.y;
    bottomedge = themapmask.y+themapmask.height-mapcontainer.height/2-mapcontainer.y;
    if (mapcontainer.themap.x>leftedge) mapcontainer.themap.x=leftedge;
    if (mapcontainer.themap.y>topedge) mapcontainer.themap.y=topedge;
    if (mapcontainer.themap.x<rightedge) mapcontainer.themap.x=rightedge;
    if (mapcontainer.themap.y<bottomedge) mapcontainer.themap.y=bottomedge;
}
4

1 に答える 1

1

Sprite.startDrag関数は、特にドラッグ領域の制約に対して 2 番目の引数を受け入れます。DisplayObject.getBounds関数は、引数DisplayObjectのコンテキスト内で、適用先オブジェクトの境界を含む四角形を返します。したがって、基本的に、あなたがする必要があるのは次のとおりです。

mapcontainer.themap.startDrag(false /*or true*/, themapmask.getBounds(mapcontainer));

そして、constrainMap 関数全体を完全に手放すことができます。

于 2012-09-28T00:40:33.267 に答える