2012-07-15 89 views
0

我有一个由一个按钮和两个标签(两个Flash组件)组成的影片剪辑。单击按钮时,我想通过删除其中一个标签,然后更改影片剪辑的高度以仅显示按钮和第一个标签(均位于影片的顶部)来最小化影片剪辑。AS3缩放没有缩放儿童的影片剪辑

我试图改变影片剪辑的高度,以及使用的scaleY但它结束了缩放标签和按钮与影片剪辑一起。

有没有办法只能缩小影片的背景,而不缩放其子(按钮和标签)?

谢谢!

回答

2

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

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

+0

我最终选择的解决方案是更改影片剪辑在第2帧有正确的比例,然后我可以调用gotoAndStop(2)来获得所需的结果 – 2012-07-16 04:43:54

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; 
     } 
    } 
}