私は四角形のような図形を描画するキャンバスを持っています。カスタムマウスダウン/マウス移動ハンドラを使用してシェイプを移動すると、シェイプは親境界の外に出る可能性があります。Flex/Flashで親コンテナの外部にドラッグしないようにするにはどうすればよいですか?
子供が親のそれをスナップバックにバインド外にある場合、私はチェックしています:
var bounds:Rectangle = this.getBounds(this.parent);
var p:Point;
if (bounds.x <0) {
p = new Point(0,0);
p.offset(-bounds.x,0);
}
if (bounds.y <0) {
if (!p) p = new Point(0,0);
p.offset(0,-bounds.y);
}
if (bounds.y+bounds.height > this.parent.height) {
if (!p) p = new Point(0,0);
p.offset(0,-bounds.y-height+this.parent.height);
}
if (bounds.x+bounds.width > this.parent.width) {
if (!p) p = new Point(0,0);
p.offset(-bounds.x-width+this.parent.width,0);
}
if (p) {
trace("invoking snapInside ", p);
snapInside(p);
私は左または上の境界の外に行くときsnapInsideメソッドが呼び出されます。しかし、子供が右または下の境界線の外にドラッグされると、Flex/Flashランタイムは親の高さと幅を自動的に拡大します。子のY境界が800ピクセルを超えると20ピクセルになると、this.parent.heightがflexによって自動的に820にサイズ変更されていることがわかります。
子が親の元の範囲外になると、親のサイズが変更されないようにするにはどうすればよいですか?
なぜstartDrag(false、new Rectangle(... bounds ...)) – alxx