2011-05-30 103 views
1

我正在使用swfobject將swf嵌入到網頁中。使用AS3獲取Flash Player的嵌入寬度/高度

var params = {}; 
params['movie'] = 'player.swf'; 
params['wmode'] = 'transparent'; 
params['bgcolor'] = 'ffffff'; 
params['allowScriptAccess'] = 'always'; 
params['allowFullScreen'] = 'true'; 

var flashvars = {}; 
flashvars['url'] = 'video.flv'; 
flashvars['resize'] = 'fit-player'; 
swfobject.embedSWF("player.swf", "video", "480", "340", "10.1.0", null, flashvars, params); 

它創建下列HTML(我測試在FF3.6,所以實際的HTML可能會因您的瀏覽器會略有不同,但應儘量接近):

<object width="480" height="340" type="application/x-shockwave-flash" data="EmbeddedPlayer.swf" id="video" style="visibility: visible;"> 
    <param name="wmode" value="transparent"> 
    <param name="bgcolor" value="ffffff"> 
    <param name="allowScriptAccess" value="always"> 
    <param name="allowFullScreen" value="true"> 
    <param name="flashvars" value="url=MD-Open_ProblemOne_1000k_part2.flv&amp;resize=fit-player"> 
</object> 

我試圖找到從AS3內部獲得'width'和'height'屬性的好方法。 stage.stageWidth返回CS5中定義的寬度,stage.width返回其孩子的合併尺寸/位置的寬度,LoaderInfo(this.root.loaderInfo).width引發以下錯誤:

Error: Error #2099: The loading object is not sufficiently loaded to provide this information. 

任何幫助將不勝感激!從JS在Flash變量

回答

2

只需使用stage.widthstage.height。這些將返回嵌入式閃存的全部寬度和高度,而不是閃存中設置的舞臺寬度和高度。

+4

(這是正確的答案)。 @Arion stage.stageWidth將返回舞臺的寬度,即使它已通過嵌入進行縮放。爲了確保這是準確的,你必須使用這個:** stage.scaleMode = StageScaleMode.NO_SCALE; ** – Marty 2011-05-30 22:23:30

+0

奇怪的是,在Flash CS5中stage.width和height返回初始寬度和高度。 – Codebeat 2012-12-13 02:01:33

0

通寬度:

.... 
var flashvars = {}; 
flashvars['url'] = 'video.flv'; 
flashvars['resize'] = 'fit-player'; 
flashvars['height'] = '340'; 
flashvars['resize'] = '480'; 
swfobject.embedSWF("player.swf", "video", "480", "340", "10.1.0", null, flashvars, params); 
+1

一個正確但不必要的策略。 – Marty 2011-05-30 22:28:31