2012-07-15 133 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; 
     } 
    } 
}