2008-10-29 81 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处,并将其宽度和高度与舞台相匹配。给它一个实例名称,然后在加载时使用该值作为大小。