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

时间:2008-08-28 17:31:14

标签: javascript flex actionscript-3 flash

我有一个带有加载文本的swf到一个Sprite中,根据放入的内容调整大小 - 我喜欢那些比页面更长的浏览器使用它的原生滚动条而不是处理它actionscript(非常像http://www.nike.com/nikeskateboarding/v3/ ...)

我确实看过nike所做的事情,但却无法将其拉下来。有什么想法吗?

5 个答案:

答案 0 :(得分:7)

诀窍是使用一些简单的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电影的大小以容纳所有新闻项目(它只是在加载新闻后才会这样做,这样做很快就会发现它没有发生)。调整大小会强制浏览器显示垂直滚动条。

答案 1 :(得分:1)

我从来没有这样做,但我认为swffit可能会把它拉下来。

答案 2 :(得分:0)

我半途看着swffit,但高度(有时宽度,但主要是高度)是动态的 - swffit让你声明一个maxHeight,但这个数字会不断变化......也许我可以弄清楚如何动态设置它。这是我开始的好地方 - 谢谢!

答案 3 :(得分:0)

我最常使用的是限制你可以制作一个“全闪光”闪光灯的尺寸,为此它效果很好。 快乐的黑客!

(不要忘记在这里发表您的发现,我可能需要这么快;)

答案 4 :(得分:0)

SWFSize

有关详细信息,请参阅here

Intuitsolutions.ca