我有一個由一個按鈕和兩個標籤(兩個Flash組件)組成的影片剪輯。單擊按鈕時,我想通過刪除其中一個標籤,然後更改影片剪輯的高度以僅顯示按鈕和第一個標籤(均位於影片的頂部)來最小化影片剪輯。AS3縮放沒有縮放兒童的影片剪輯
我試圖改變影片剪輯的高度,以及使用的scaleY但它結束了縮放標籤和按鈕與影片剪輯一起。
有沒有辦法只能縮小影片的背景,而不縮放其子(按鈕和標籤)?
謝謝!
我有一個由一個按鈕和兩個標籤(兩個Flash組件)組成的影片剪輯。單擊按鈕時,我想通過刪除其中一個標籤,然後更改影片剪輯的高度以僅顯示按鈕和第一個標籤(均位於影片的頂部)來最小化影片剪輯。AS3縮放沒有縮放兒童的影片剪輯
我試圖改變影片剪輯的高度,以及使用的scaleY但它結束了縮放標籤和按鈕與影片剪輯一起。
有沒有辦法只能縮小影片的背景,而不縮放其子(按鈕和標籤)?
謝謝!
它不會那樣工作。縮放父母會影響所有孩子 - 這是一件好事,因爲它使修改大量顯示對象變得更容易。
您必須更改層次結構,以便您嘗試縮放的圖形剪輯與標籤和按鈕位於同一級別 - 只需創建一個新的MovieClip並將所有四個元素(圖形,按鈕,標籤)在它之內。
我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;
}
}
}
我最終選擇的解決方案是更改影片剪輯在第2幀有正確的比例,然後我可以調用gotoAndStop(2)來獲得所需的結果 – 2012-07-16 04:43:54