0

ボタンと2つのラベル(両方ともフラッシュコンポーネント)で構成されるムービークリップがあります。ボタンをクリックするときに、ラベルの1つを削除し、ムービークリップの高さを変更して、ボタンと最初のラベル(両方ともムービーの上部にある)のみを表示することにより、ムービークリップを最小化します。

ムービークリップの高さを変更し、scaleYを使用してみましたが、ムービークリップと一緒にラベルとボタンをスケーリングすることになります。

子(ボタンとラベル)を拡大縮小せずに、映画の背景のみを拡大縮小する方法はありますか?

ありがとう!

4

2 に答える 2

2

それはそのようには機能しません。親のスケーリングはすべての子に影響します。これは、表示オブジェクトの大きなグループの変更が非常に簡単になるため、良いことです。

拡大縮小しようとしているグラフィッククリップがラベルおよびボタンと同じレベルにあるように階層を変更する必要があります。新しいMovieClipを作成し、その中に4つの要素(グラフィック、ボタン、ラベル)をすべて配置するだけです。

于 2012-07-15T20:49:08.347 に答える
2

私は、親と一緒にスケーリングする子供たちが正しい行動であるというweltraumpiratに同意します。親からそれらを移動することを回避できない場合は、親が子に与えるスケーリングを元に戻す次の擬似コードを検討することができます。

public class ParentClip extends MovieClip
{
    // Consider moving all of those unscalable clips into this MovieClip so you would not have to process them individually
    public var clipsDoNotScale:MovieClip;

    public override function set scaleX(value:Number):void
    {
        var previousValue:Number = super.scaleX;
        super.scaleX = value;

        if ( previousValue != value && clipsDoNotScale )
        {
            clipsDoNotScale.scaleX = 1 / value;

            //Proportionally move the clip too
            clipsDoNotScale.x *= value / previousValue;
        }
    }

    public override function set scaleY(value:Number):void
    {
        var previousValue:Number = super.scaleY;
        super.scaleY = value;

        if ( previousValue != value && clipsDoNotScale )
        {
            clipsDoNotScale.scaleY = 1 / value;

            //Proportionally move the clip too
            clipsDoNotScale.y *= value / previousValue;
        }
    }
}
于 2012-07-15T21:27:44.553 に答える