最近、Flex を使用するプロジェクトに取り組みました。その写真編集プロジェクトです。私はキャンバスを取り、コードを使用してそのキャンバスに画像を取りましたcanvas.addChild(image)
。これで、移動コードを使用して画像を自由に移動できます。イメージはキャンバスの内側と外側に移動します。画像/子をキャンバスの外側ではなく内側にのみ移動したい。これどうやってするの?
1 に答える
これを行うには2つの方法があります。
- 境界長方形
- 長方形(またはマスク)をスクロール
「移動コード」がonClickで初期化されたEvent.ENTER_FRAMEハンドラーのようなものであると仮定すると、画像が親Canvasの境界を離れることができないようにする必要があります。
最初のケース(外接する長方形)では、リタングル内で画像をドラッグできますが、画像全体を常に表示できます。これがイメージクロッパーの仕組みです。
境界矩形を作成するには、かなり詳細なメソッドを作成する必要がありますが、その背後にある考え方は単純です。キャンバスから外接する長方形を取得し、 0を下回ったり、を超えimage.x
たりしないでください。高さも同じです。これがFlex (およびソース)のサンプルImageCropperです。詳細については、彼らがどのようにそれを行ったかを確認してください。image.x + image.width
canvas.width
2番目のケース(長方形のスクロール)を使用すると、このFlexパン/ズームマップ(ソースはこちら)に表示されるような、コンテナーのようなパン/ズームをさらに作成できます。また、右側のFlex Image Cropperの大きな画像は、この2番目のケースの例ですが、ドラッグはありません。そのためには、キャンバス上のscrollRectプロパティの位置を操作する必要があります。scrollRect
プロパティは、Canvasのflash.geom.Rectangle
「ビューポート」を定義するものです。verticalScrollPosition
次に、プロパティとプロパティを変更/更新してhorizontalScrollPosition
、(外接する長方形と比較して)逆方向にします。
キャンバスでtrueに設定clipAndEnableScrolling
し、その中(およびimage.includeInLayout = true
)の周りに子画像をドラッグすると、画像がクリップされてキャンバス内にのみ表示されるはずです。しかし、私はあなたがケース1を望んでいると推測しています。それらのプロパティを検索するだけで、グーグルでいくつかの良い例を見つけることができます。
頑張って、楽しいプロジェクトになるはずです。
ランス