2008-10-29 53 views
8

這裏的情況 - 我有一個外殼加載一個外部.swf。現在,那個.swf是800x600,但它是一個動畫片段,並且有些元素從舞臺上延伸出來。當我將.swf加載到shell並調用它的width屬性時,它會返回1200 - 因爲它包含了跳出舞臺的元素。加載swf的舞臺的尺寸

這不是我想要的 - 理想情況下,會有兩個屬性,一個返回「計算寬度」,另一個返回「默認寬度」。這些屬性是否存在,如果不存在,什麼是最好的解決方法?

回答

15

由您創建的FLA定義的已加載SWF的寬度和高度可以在您已加載SWF的Loader對象中找到。

swfLoader.contentLoaderInfo.width 
swfLoader.contentLoaderInfo.height 

這將始終顯示您在FLA屬性中定義的尺寸。如果有任何圖像,影片剪輯或您從舞臺上伸出了什麼,它沒有任何區別。

stage.stageWidthstage.stageHeight屬性將永遠返回舞臺的寬度,舞臺始終是SWF的最頂層。換句話說,它將始終代表殼體舞臺的尺寸。 Flash應用程序中只有一個階段。

+0

感謝提供'舞臺'屬性的提示 - 這有點違反直覺,不是嗎? – 2008-11-03 01:11:29

+0

不錯的一個!這完全有效!我從來沒有想過看到加載器信息對象 - 我通常只是使用一次性變量來保存它,而我正在等待「真實」內容加載,但我可能會嘗試並在將來保留它。 。 謝謝! – 2008-11-03 01:17:03

0

馬克很可能是正確的,content loader info對象將包含正確的寬度和高度。我從來沒有檢查過自己,所以我不能保證。文檔說'名義',並與'實際'對比,所以它似乎是合理的。

有幾個其他選項。你可以掩蓋外部swf。創建一個與舞臺大小相同的蒙版,並將所有內容放在其下面。另一個想法是創建一個基於矩形形狀的動畫片段,將其設置爲0,將其放置在x:0,y:0處,並將其寬度和高度與舞臺相匹配。給它一個實例名稱,然後在加載時使用該值作爲大小。