0

我有一个包含一个按钮和两个标签(都是 Flash 组件)的影片剪辑。单击按钮时,我想通过删除其中一个标签来最小化影片剪辑,然后将影片剪辑的高度更改为仅显示按钮和第一个标签(两者都在影片的顶部)。

我曾尝试更改影片剪辑的高度以及使用 scaleY,但它最终会随影片剪辑一起缩放标签和按钮。

有没有办法只缩放电影的背景而不缩放其子项(按钮和标签)?

谢谢!

4

2 回答 2

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 回答
2

它不会那样工作。缩放父级会影响所有子级 - 这是一件好事,因为它使修改大型显示对象组变得更加容易。

您将不得不更改层次结构,以便您尝试缩放的图形剪辑与标签和按钮位于同一级别 - 只需创建一个新的 MovieClip 并将所有四个元素(图形、按钮、标签)放在其中。

于 2012-07-15T20:49:08.347 回答