使用 SWFObject 加载 SWF 时调整其大小

Posted

技术标签:

【中文标题】使用 SWFObject 加载 SWF 时调整其大小【英文标题】:Resize an SWF when loading it with SWFObject 【发布时间】:2010-10-31 11:09:01 【问题描述】:

我正在使用 SWFObject 将 SWF 电影加载到 html 页面中。我想动态调整这个 SWF 的大小。 SWFObject 如何提供帮助?我确定我不必write my own 解决方案。

【问题讨论】:

我认为您需要澄清“调整大小”flash swf 的含义。当它的嵌入大小发生变化时,它“内部”的行为方式取决于你最初是如何制作 swf 的。 我需要调整 SWF 容器的大小...顺便说一句,我知道在 Flash SWF 中设置的缩放 (Stage.scaleMode) 和对齐 (Stage.align) 选项会影响内容如何受到影响,因为容器调整大小。 【参考方案1】:

最简单的解决方案是将 SWF 嵌入容器 div 中,然后使用 javascript 和 CSS 动态调整容器 DIV 的大小。如果 SWF 设置为 100% 宽度/高度,则每当调整包装器大小时,它将拉伸以适合包装器。

在体内:

<div id="wrapper">
<div id="flash">This div will be replaced by an object via SWFObject</div>
</div>

在头脑中:

<script>
var flashvars = ;
var params =  scale: "exactFit" ;
var attributes = ;

swfobject.embedSWF("myContent.swf", "flash", "100%", "100%", "9.0.0","expressInstall.swf", flashvars, params, attributes);
</script>

<style type="text/css">
#flash 
   display: block;
   width: 100%;
   height: 100%;

</style>

现在,每当您调整 #wrapper 的大小时,SWF 都会缩放以填充它。

【讨论】:

【参考方案2】:

查看swffit,它应该完全符合要求。

【讨论】:

它不会调整 Flash SWF 的大小,它只会对保存它的 Div 做一些事情。我想真正地向上和向下缩放 Flash SWF,就像调整 Solitaire 窗口的大小一样。【参考方案3】:

这对我不起作用,但做了一些小的更改,如 http://code.google.com/p/swfobject/wiki/faq “如何创建一个包含 100% 浏览器窗口的 SWF?”部分?

这样

<style type="text/css" media="screen">
  html, body, #containerA, #containerB  height:100%; 
  body  margin:0; padding:0; overflow:hidden; 
</style>

完美!

【讨论】:

【参考方案4】:

我相信上面的代码应该是:

#wrapper 
   display: block;
   width: 100%;
   height: 100%;

【讨论】:

这条评论是错误的:当它的目的是调整大小时,你为什么要将包装器设置为 100%?只考虑@pipwerks 的回答。

以上是关于使用 SWFObject 加载 SWF 时调整其大小的主要内容,如果未能解决你的问题,请参考以下文章

用 SWFObject 代替常规嵌入真的很重要吗?

频繁加载删除swf造成flash崩溃解决办法

如何使用 swfobject 通知 HTML 容器 SWF 已完成

swf 文件在 html5 中是不是仍需要 swfobject.js?

将变量从html加载到swf中(正确的方式)

如何自定义使用 SWFobject 实现的播放器?