如何在运行时调整 swf 的大小以让浏览器创建 html 滚动条?

Posted

技术标签:

【中文标题】如何在运行时调整 swf 的大小以让浏览器创建 html 滚动条?【英文标题】:How can I resize a swf during runtime to have the browser create html scrollbars? 【发布时间】:2010-09-07 04:00:50 【问题描述】:

我有一个 swf 将文本加载到 Sprite 中,该 Sprite 根据放入的内容调整大小 - 我希望那些比页面长的页面让浏览器使用其本机滚动条而不是处理它actionscript(很像http://www.nike.com/nikeskateboarding/v3/...)

我确实看过 nike 所做的事情,但就是无法完成。有什么想法吗?

【问题讨论】:

【参考方案1】:

SWFS大小

更多详情请见here。

Intuitsolutions.ca

【讨论】:

虽然这在理论上可以回答问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。【参考方案2】:

诀窍是使用一些简单的 javascript 来调整 Flash DOM 节点的大小:

function resizeFlash( h ) 
    // "flash-node-id" is the ID of the embedded Flash movie
    document.getElementById("flash-node-id").style.height = h + "px";

您在 Flash 电影中调用如下:

ExternalInterface.call("resizeFlash", 400);

您实际上不需要在外部拥有 JavaScript 代码,如果您愿意,您可以从 Flash 中完成这一切:

ExternalInterface.call(
    "function( id, h )  document.getElementById(id).style.height = h + 'px'; ",
    ExternalInterface.objectID,
    400
);

匿名函数只是为了能够将 ID 和高度作为参数传入,而不是将它们连接到 JavaScript 字符串中。

我认为 JavaScript 是相当跨平台的。如果您想查看现场示例,请查看此站点:talkoftheweather.com。它可能看起来好像没有做任何事情,但它会自动调整 Flash 影片大小以适应所有新闻项目(它在加载新闻后立即执行此操作,完成速度如此之快以至于您不会注意到它的发生)。调整大小会强制浏览器显示垂直滚动条。

【讨论】:

我发现我可以得到宽度,但不能设置它。 我现在将 SWF 放在 DIV 中并改为调整 DIV 的大小。 并将swf设置为div的100%,这样swf会随着div一起扩展。【参考方案3】:

我主要使用 if for 是为了限制你可以制作一个“全浏览器”flash 的大小,而且它的效果很好。 快乐黑客!

(别忘了在这里发布你的发现,我可能需要它太快了;))

【讨论】:

【参考方案4】:

我看了一半 swffit,但高度(有时和宽度,但主要是高度)将是动态的 - swffit 让您声明一个 maxHeight 但该数字会不断变化......也许我可以弄清楚如何动态设置它。不过,这对我来说是个不错的起点 - 谢谢!

【讨论】:

【参考方案5】:

我从来没有这样做过,但我认为swffit 可能能够成功。

【讨论】:

SWFFit 很好,但最新版本需要 SWFObject,顺便说一句。

以上是关于如何在运行时调整 swf 的大小以让浏览器创建 html 滚动条?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Android Firefox 浏览器在打开软键盘时调整窗口大小

jButtons 在运行时调整大小

如何在使用 jQuery(可拖动和可调整大小)拖动光标时调整图像大小

SVG 仅在 Safari 中悬停时调整大小

以编程方式创建的 UILabel 未在旋转时调整大小

Twitter Bootstrap:导航栏未在方向更改时调整大小(仅适用于 Android 的股票浏览器)