【问题标题】:dimensions of loaded swf's stage加载 swf 阶段的尺寸
【发布时间】:2008-10-29 00:45:25
【问题描述】:

情况是这样 - 我有一个加载外部 .swf 的 shell。现在,.swf 是 800x600,但它是一个动画片段,并且有一些元素延伸到舞台之外。当我将 .swf 加载到 shell 中并调用它的 width 属性时,它返回 1200 - 因为它包含了脱离舞台的元素。

这不是我想要的——理想情况下,会有两个属性,一个返回“计算宽度”,一个返回“默认宽度”。这些属性是否存在,如果不存在,最好的解决方法是什么?

【问题讨论】:

    标签: actionscript-3 flash external


    【解决方案1】:

    加载的 SWF 的宽度和高度由创建它的 FLA 定义,可在您已将 SWF 加载到的 Loader 对象中找到。

    swfLoader.contentLoaderInfo.width
    swfLoader.contentLoaderInfo.height
    

    这将始终显示 FLA 属性中定义的尺寸。如果有任何图像、电影剪辑或您从舞台上延伸出来的东西,这没有什么区别。

    stage.stageWidthstage.stageHeight 属性将始终返回舞台的宽度,舞台始终是最顶部的 SWF。换句话说,它将始终代表外壳舞台的尺寸。 Flash 应用程序只有一个阶段。

    【讨论】:

    • 感谢有关“舞台”属性的提示 - 这有点违反直觉,不是吗?
    • 不错的一个!这完全有效!我从未想过查看加载器信息对象 - 我通常只是在等待“真实”内容加载时使用一次性变量来保存它,但我可能会尝试在未来保留它.. . 谢谢!
    • 该死,更好的是,您可以只说 myMovieClip.loaderInfo.width,而不必将原始 swfLoader 保存在另一个变量中 - 通过 Loader 加载的任何内容都会保留对它自己的 Loader 对象的引用!
    【解决方案2】:

    Mark 很可能是正确的,content loader info 对象将包含正确的宽度和高度。我从来没有检查过自己,所以我不能保证。文档说“名义”并将其与“实际”进行对比,因此看起来很合理。

    还有其他几个选项。您可以屏蔽外部 swf。创建一个与舞台大小相同的蒙版,并将所有内容放在其下方。另一个想法是创建一个基于矩形形状的动画剪辑,将其 alpha 设置为 0 将其放置在 x:0, y:0 并将其宽度和高度与舞台相匹配。给它一个实例名称,然后在加载时使用该值作为大小。

    【讨论】:

    • 我不得不做一个快速修复,没有时间查看马特的答案,我的快速修复是你的建议 - 我在加载的 .swf 中制作了两个电影剪辑,一个与尺寸匹配舞台的一部分,一个包围并超越了打破舞台的元素所创造的界限。
    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多