0

UIComponent から継承されたカスタム フレックス コンポーネントがあります (コンパイル済み、ソース コードへのアクセスなし)。幅と高さの比率が固定されており、スケーラブルです。幅と高さを 100% に設定すると、親のサイズに合わせようとしますが、幅と高さの比率が維持されるため、比率が親の比率と等しくない場合、親のサイズを変更すると、このコンポーネントの近くに空きスペースが表示される可能性があります。ここに画像の説明を入力

私が必要としているのは、コンポーネントを親のサイズに完全に合わせることです。これを行う良い方法はありますか?resize親のイベントをリッスンし、コンポーネントのscaleXscaleYで遊ぶことができましたが、問題を解決するためのより良い方法が存在する可能性があります (プロパティはありますか?)。ありがとう。

4

3 に答える 3

2

greensock のAutoFitAreaを使用するのが良い方法です。コーディングは次のように簡単です

var area:AutoFitArea = new AutoFitArea(this, 50, 70, 300, 100);
area.attach(myImage, {scaleMode:ScaleMode.PROPORTIONAL_OUTSIDE, crop:true});

これは、そこから指定された寸法を実行するために内部にあるものを制限します。幅を(300,100)変更するだけareaで、すべてを把握できます。

それが役に立てば幸い

于 2011-03-30T09:37:11.260 に答える
1

個人的には、親内のコンポーネントを幅/高さ 100% に設定し、コンポーネント自体の中で updateDisplayList 関数 (スケーリングされていない幅/高さを返す) をオーバーライドしてから、しようとしている子のサイズを変更します。このコンテナの幅/高さに応じて表示されます。このようなもの:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
    if(this._child!= null)
    {
        if(unscaledWidth > unscaledHeight)
        {
            this._child.height = unscaledHeight;
            this._child.scaleX = this._video.scaleY;
        }else{
            this._child.width = unscaledWidth;
            this._child.scaleY = this._video.scaleX;
        }
    }
}

やるべきです。

于 2011-03-30T18:19:54.613 に答える
0

コンポーネントはその比率を維持する必要がありますか? そうでない場合は、あなたが言ったように、親のサイズ変更イベントをリッスンし、幅と高さをコンポーネントの値に設定できます。

コンポーネントの比率を維持する必要がある場合は、コンポーネントの背景のサイズを変更して親のサイズに合わせ、コンポーネントのコンテンツのサイズをその比率で個別に変更できます。

于 2011-03-30T09:37:03.997 に答える