Получить встроенную ширину / высоту Flash Player с использованием AS3

#flash #actionscript-3

#flash #actionscript-3

Вопрос:

Я использую swfobject для встраивания swf-файла в веб-страницу.

 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.flvamp;amp;resize=fit-player">
</object>
  

Я пытаюсь найти хороший способ получения атрибутов ‘width’ и ‘height’ из AS3. stage.stageWidth возвращает ширину, которая была определена в CS5, stage.width возвращает ширину объединенных размеров / позиций его дочерних элементов и LoaderInfo(this.root.loaderInfo).width выдает следующую ошибку:

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

Любая помощь была бы высоко оценена!

Ответ №1:

Просто используйте stage.width и stage.height . Они возвращают полную ширину и высоту встроенной flash, а не ширину и высоту сцены, установленные во flash.

Комментарии:

1. (Это правильный ответ). @Arion stage.stageWidth вернет ширину сцены, даже если она была масштабирована с помощью встраивания. Чтобы убедиться в точности этого, вам придется использовать это: stage.scaleMode = StageScaleMode.NO_SCALE;

2. Странно, в Flash CS5 это стадия. width и height возвращает исходные ширину и высоту.

Ответ №2:

передать ширину из JS во flashvars:

 ....
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);