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

7
我有一个swf文件,其中的文本被加载到一个Sprite中,并根据输入的内容进行调整大小 - 但是,我希望那些超出页面长度的文本能够使用浏览器的本地滚动条而不是在actionscript中处理它(非常像http://www.nike.com/nikeskateboarding/v3/...)。
我确实看了一下耐克所做的东西,但就是无法实现。你们有什么想法吗?
5个回答

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电影大小以适应所有新闻项目(它在加载新闻后立即执行此操作,这样做非常快速,您不会注意到它正在发生)。调整大小会强制浏览器显示垂直滚动条。

我发现我可以获取宽度,但无法设置它。 - Magnus Smith
我现在将SWF放在DIV中并调整DIV的大小。 - Magnus Smith
将swf设置为div的100%,这样swf将随着div的扩展而扩展。 - adamcodes

1

我从来没有这样做过,但我认为swffit可能能够实现它。


SWFFit很好用,但最新版本需要使用SWFObject。顺便说一下。 - Ross Henderson

0

SWFSize

更多详情请参见此处

Intuitsolutions.ca


虽然这个回答在理论上可能是正确的,但最好还是包括答案的核心部分并提供链接作为参考。参考链接 - Jack

0

我大致看了一下swffit,但高度(有时宽度也是,但主要是高度)会是动态的 - swffit允许您声明一个最大高度,但该数字将不断变化...也许我可以想办法动态设置它。这对我来说是一个很好的起点 - 谢谢!


0

我主要使用它来限制“全屏”Flash的最小尺寸,这方面它非常有效。

祝你编程愉快!(别忘了在这里发布你的发现,我很快也会需要它;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接