0

最近、Flex を使用するプロジェクトに取り組みました。その写真編集プロジェクトです。私はキャンバスを取り、コードを使用してそのキャンバスに画像を取りましたcanvas.addChild(image)。これで、移動コードを使用して画像を自由に移動できます。イメージはキャンバスの内側と外側に移動します。画像/子をキャンバスの外側ではなく内側にのみ移動したい。これどうやってするの?

4

1 に答える 1

1

これを行うには2つの方法があります。

  • 境界長方形
  • 長方形(またはマスク)をスクロール

「移動コード」がonClickで初期化されたEvent.ENTER_FRAMEハンドラーのようなものであると仮定すると、画像が親Canvasの境界を離れることができないようにする必要があります。

最初のケース(外接する長方形)では、リタングル内で画像をドラッグできますが、画像全体を常に表示できます。これがイメージクロッパーの仕組みです。

境界矩形を作成するには、かなり詳細なメソッドを作成する必要がありますが、その背後にある考え方は単純です。キャンバスから外接する長方形を取得し、 0を下回ったり、を超えimage.xたりしないでください。高さも同じです。これがFlex (およびソース)のサンプルImageCropperです。詳細については、彼らがどのようにそれを行ったかを確認してください。image.x + image.widthcanvas.width

2番目のケース(長方形のスクロール)を使用すると、このFlexパン/ズームマップソースはこちら)に表示されるような、コンテナーのようなパン/ズームをさらに作成できます。また、右側のFlex Image Cropperの大きな画像は、この2番目のケースの例ですが、ドラッグはありません。そのためには、キャンバス上のscrollRectプロパティの位置を操作する必要があります。scrollRectプロパティは、Canvasのflash.geom.Rectangle「ビューポート」を定義するものです。verticalScrollPosition次に、プロパティとプロパティを変更/更新してhorizontalScrollPosition、(外接する長方形と比較して)逆方向にします。

キャンバスでtrueに設定clipAndEnableScrollingし、その中(およびimage.includeInLayout = true)の周りに子画像をドラッグすると、画像がクリップされてキャンバス内にのみ表示されるはずです。しかし、私はあなたがケース1を望んでいると推測しています。それらのプロパティを検索するだけで、グーグルでいくつかの良い例を見つけることができます。

頑張って、楽しいプロジェクトになるはずです。

ランス

于 2010-02-04T08:59:21.067 に答える