2012-05-22 83 views
1

我經常縮放一個movieclip,並且需要根據其大小將它放置在某些地方的屏幕上。as3獲取縮放/調整大小的WIDTH和HEIGHT - movieClip/mc?

縮放後,我如何獲得影片剪輯的WIDTH和HEIGHT?

trace(my_mc.width); /// would equal 333 

/// This code makes my movie clip fit in the correct proportions. 
my_mc.height = stage.stageHeight; 
my_mc.scaleX = my_mc.scaleY; 

/// Its been resized! 
trace(my_mc.width); /// STILL equals 333 

..

任何想法如何獲取新的寬度和高度?

+0

粘貼此代碼在Flash中顯示的寬度變化 - 這是你的實際代碼? –

+0

沒有它的一個例子。但寬度確實隨這個代碼而改變。高度和寬度都是。我沒有做數學。這是一些聰明的Stack Overflower的優秀代碼。 –

+0

謝謝\'Papa \'自從我開始Flash開發以來,我一直在尋找'stage.stageWidth'和'stage.stageHeight'。 * upvoted * – Bitterblue

回答

1

您可能正在經歷階段縮放問題。

如果你依賴於舞臺的大小,設置:

import flash.display.StageAlign; 
import flash.display.StageScaleMode; 

stage.scaleMode = StageScaleMode.NO_SCALE; 
stage.align = StageAlign.TOP_LEFT; 

您提供的例子並不封裝問題。它按預期工作。

size scale

也有可能是你的跟蹤語句的時間,如果你正在做基於幀的動畫。也許你正在查看大小的工件,而不是符合你期望的生命週期。

+0

謝謝傑森,我試過你的代碼。我仍然使用跟蹤獲得相同的值。 –

+0

更新您的問題與實際實施將有助於隔離根本原因。閃光燈座標系可以快速變得複雜。 –

+0

想通了。或者一個偉大的工作。我希望這可以幫助很多人。我希望我會在幾年前發現。 –

-1

感謝您的所有努力。我找到了答案! :)


import flash.display.MovieClip; 

/// My stage is 500 by 500. 
/// My Image or movieClip is 446 by 688. 
/// I am calling it my_mc. 
trace(my_mc.width + " by " + my_mc.height); /// OUTPUT: 446 by 688 

// I want the height to match the height of my stage but keep the same 
// proportions. So I use the code below. WORKS GREAT! 
my_mc.height = stage.stageHeight; 
my_mc.scaleX = my_mc.scaleY; 

// But if I want to trace the width and the height it will still be the same. 
trace(my_mc.width + " by " + my_mc.height); /// OUTPUT: 446 by 688. 


///So I make a NEW movieClip below after I scaled it. 
var NewMC:MovieClip = my_mc as MovieClip; 

/// NOW WHEN I TRACE IT... :) 
trace(NewMC.width + " by " + NewMC.height); /// 324.1 by 500 

// YES!!! I can't believe I figured this out on my own! Woo hoo! :) 
+0

這沒有任何意義。 var NewMC:MovieClip = my_mc不會創建新的MovieClip - 它是對同一個實例的引用,但它表明您的實例名稱和變量範圍可能存在問題。 –